如果我有三个不同的文本文件,如何读取它们然后按平均值排序?

2024-09-29 19:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个代码,你可以问数学问题。我把学生的成绩和他们的名字一起保存在3个不同的班级的不同文件夹里。然后我有三个不同的文件为每个测试,他们做了。我需要一个代码来检查他们的名字是否在每个文件中。然后当它检查名字是否在每个文件中时,我想从个人结果中读取所有三个分数。然后将三个分数按平均值排序并打印出来,但每个人都要做三次测试。在

以下是我目前为止的代码,它询问问题,然后将姓名和分数保存到文件中,等等:

import random

Name =input("What is your name?")
Class =input("What class are you in? (1/2/3)")
TimesDone = input("How many times have you done the test before(1-3)")

Score = 1
Questions = 1

while Questions < 10:
    Randomnumber1 = (random.randint(1,10))
    Randomnumber2 = (random.randint(1,10))

Operators = ['+','-','*']
Operators1 = random.choice(Operators)

print(Randomnumber1, Operators1, Randomnumber2)

if Operators1 == '+':
    answer = (Randomnumber1 + Randomnumber2)
elif Operators1 == '-':
    answer = (Randomnumber1 - Randomnumber2)
elif Operators1 == '*':
    answer = (Randomnumber1 - Randomnumber2)

UserGuess = int(input("What is the answer to the question?"))

if UserGuess == answer:
    print("Well done",Name,"you got the correct answer!")
    Questions = Questions+1
    Score = Score+1
else:
    print("Wrong answer",Name,"the correct answer is",answer,".")
    Questions = Questions+1

if Questions == 10:
    print("You answered all 10 questions and your final score",Score,".")

if Class == '1':
    if TimesDone == '1':
        myfile = open('namesforclass1test1.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass1test1.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()            
    elif TimesDone == '2':
        myfile = open('namesforclass1test2.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass1test2.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()            
    elif TimesDone == '3':
        myfile = open('namesforclass1test3.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass1test3.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()            
elif Class == '2':
    if TimesDone == '1':
        myfile = open('namesforclass2test1.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass2test1.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()
    elif TimesDone == '2':
        myfile = open('namesforclass2test2.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass2test2.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()
    elif TimesDone == '3':
        myfile = open('namesforclass2test3.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass2test3.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()
elif Class == '3':
    if TimesDone == '1':
        myfile = open('namesforclass3test1.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass3test1.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()

    elif TimesDone == '2':
        myfile = open('namesforclass3test2.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass3test2.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()
    elif TimesDone == '3':
        myfile = open('namesforclass3test3.txt','a')
        names = (Name)
        myfile.write(repr(names))
        myfile.write('\n')
        myfile.close()

        myfile = open('scoresforclass3test3.txt','a')
        scores = (Score)
        myfile.write(repr(scores))
        myfile.write('\n')
        myfile.close()

Tags: answernametxtcloseifnamesopenmyfile
1条回答
网友
1楼 · 发布于 2024-09-29 19:27:05

编辑:在理解用户的意图后更新了答案。在

我对这个代码的第一个问题是它非常冗余。Python遵循DRY(不要重复自己)的方法。取多余的代码,从中创建一个函数,用不同的参数多次调用函数。例如:

def write_data_to_file(filename, data):
    myfile = open(filename,'a')
    myfile.write(repr(data))
    myfile.write('\n')
    myfile.close()

接下来,我将对用于解决问题。使用一本单子词典对我们有帮助。例如:

^{pr2}$

相关问题 更多 >

    热门问题