python编程技术的题目,希望能得到解答

现有份学生成绩名单“成绩.txt”。

1、在控制台输出名单的人员总数
2、读取控制台用户输入的姓名,查询并输出此人的所有成绩信息
3、修改“成绩.txt”,计算每个学生的平均分,并添加在每一行的末尾
4、采用模块化的设计方法,避免代码的重复,避免所有逻辑都写在一个主流程中。


def get_data():
    f = open('a.txt', 'r', encoding='utf-8')
    d = f.read()
    f.close()
    return d



def get_score(d):
    qname = input('输入姓名')
    qstatus = False
    for i in d.split('\n'):
        name, yuwei, shuxue, yingyu = i.split(',')
        if qname == name:
            print(f'语文{yuwei},数学{shuxue},英语{yingyu}')
            qstatus = True
    if qstatus is False:
        print('无此人成绩信息')

def get_everyone(d):
    data_list = []
    for i in d.split('\n'):
        name, yuwei, shuxue, yingyu = i.split(',')
        avg = (int(yuwei) + int (shuxue) + int(yingyu)) / 3
        print(f'学生:{name},语文{yuwei},数学{shuxue},英语{yingyu},平均分{avg}')
        data_list.append([name, yuwei, shuxue, yingyu, avg])
    # 写入新的文件
    f = open('new.txt', 'w', encoding='utf-8')
    for i in data_list:
        f.write(','.join(i))
    f.close()

if __name__ == '__main__':
    # 第一问
    d = get_data()
    print('人员总数', len(d.split('\n')))
    # 第二问
    get_score(d)
    # 第三问
    get_everyone(d)

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

代码如下,经测试能够完成题目的三项任务,参考一下:

def read_scores(path):
    global subjects
    with open(path,'r',encoding='utf-8') as f:
        d=f.read().split('\n')
        subjects=d[0]
        data=[x for x in d[1:]]        
        nums=len(data)
    return nums,data
def query_scores(data,name):
    global subjects
    for x in data:
        if name in x:
            print(f'{name}成绩:')
            print('\t'.join(subjects.split(',')[3:]))
            print('\t'.join(x.split(',')[3:]))
def modify_scores(path,data):
    global subjects
    new=[]
    for x in data:
        scores=[float(a) for a in x.split(',')[3:]]
        avg=round(sum(scores)/len(scores),2)
        new.append(x+','+str(avg))
    with open(path,'w',encoding='utf-8') as f1:
        f1.write(subjects+",平均成绩"+'\n')
        f1.write('\n'.join(new))
def main():
    path='F:/2021/qa/ot2/成绩.txt'
    rd=read_scores(path)
    data=rd[1]
    print(f'共有{rd[0]}名学生')
    inp=input('输入学生姓名查询成绩:')
    for dt in data:
        if inp in dt:
            query_scores(data,inp)
            break
    else:
        print('查无此人。')
    modify_scores(path, data)
main()


如有帮助,请点击我回答左下角【采纳该回答】按钮支持一下,有问题继续沟通交流。

img