打印最高值输入



这是一个简单的python分数计算代码,我需要该代码来打印最高分

file = open("score.txt","w")
number = eval(input("Enter the number of the records you need: "))
for i in range (1,number+1):
name = input("Enter the name: ")
file.write(name)
file.write("n")
grade = int(input("Enter grade: "))
file.write(str(grade))
file.write("n")
file.close()
file = open("score.txt","r")
file.close()
print()
print("High Score: ", grade)
print("Held By: ", name)
print()
print("Number of Scores: ", number)

我试过这个

file = open("score.txt","w")
number = eval(input("Enter the number of the records you need: "))
for i in range (1,number+1):
name = input("Enter the name: ")
file.write(name)
file.write("n")
grade = int(input("Enter grade: "))
file.write(str(grade))
file.write("n")
file.close()
file = open("score.txt","r")
file.close()
print()
print("High Score: ", grade)
print("Held By: ", name)
print()
print("Number of Scores: "), max(number)

它似乎不起作用,并显示错误"t"对象不可迭代

当我运行您的代码时,我不会收到错误。但是你的代码目前并没有给你最高的分数。保持与代码相似的逻辑。。。

with open("score.txt", "w") as f:
number = int(input("Enter the number of the records you need: "))
if number == 0:
exit()
# get name
name = input("Enter the name: ")
f.write(f"{name}n")
# get grade
grade = int(input("Enter grade: "))
f.write(f"{grade}n")
# current max score and corresponding name
max_score = grade
max_name = name
for i in range(number - 1):
# get name
name = input("Enter the name: ")
f.write(f"{name}n")
# get grade
grade = int(input("Enter grade: "))
f.write(f"{grade}n")
# update current max score and corresponding name
if grade > max_score:
max_score = grade
max_name = name
print(f"n{'High Score':16}: {max_score}")
print(f"{'Held By':16}: {max_name}n")
print(f"{'Number of Scores':16}: {number}")

示例会话

Enter the number of the records you need: 2
Enter the name: Bonnie
Enter grade: 90
Enter the name: Clyde
Enter grade: 56
High Score      : 90
Held By         : Bonnie
Number of Scores: 2

"score.txt"

Bonnie
90
Clyde
56

当用户输入记录时,您可以跟踪输入的分数最高的名称,这样您就不必再次读取整个文件:

def get_int_input(prompt: str) -> int:
while True:
try:
return int(input(prompt))
except ValueError:
print('Error: Enter an integer, try again...')
def main() -> None:
num_records = get_int_input('Enter the number of the records you need: ')
highest_grade = 0
highest_grade_names = []
with open('score.txt', 'w') as file:
for _ in range(num_records):
name = input('Enter name: ')
grade = get_int_input('Enter grade: ')
file.write(f'{name}n{grade}n')
if grade > highest_grade:
highest_grade = grade
highest_grade_names = [name]
elif grade == highest_grade:
highest_grade_names.append(name)
print()
print(f'Number of records entered: {num_records}')
print(f'Highest grade: {highest_grade}')
print(f'Held by: {", ".join(highest_grade_names)}')
if __name__ == '__main__':
main()

示例用法:

Enter the number of the records you need: 4
Enter name: Apple
Enter grade: 85
Enter name: Banana
Enter grade: 100
Enter name: Carrot
Enter grade: 100
Enter name: Durian
Enter grade: 65
Number of records entered: 4
Highest grade: 100
Held by: Banana, Carrot

score.txt的样子:

Apple
85
Banana
100
Carrot
100
Durian
65

如果你想获得最高分数,你可以不把变量存储在这样的文件中:

dic = {"Name": [], "Grade": []}
for i in range(int(input("Enter the number of the records you need: "))):
dic["Name"].append(input("Enter the name: "))
dic["Grade"].append(int(input("Enter grade: ")))
i = 0
highest = 0
for grade in dic["Grade"]:
if grade > highest:
highest = grade 
index = i
i += 1

print("Highscore: {}nHeld by: {}nNumber of Scores: {}"
.format(dic["Name"] [index], 
dic["Grade"][index], len(dic["Name"])))

但如果你想存储数据,只需添加以下内容:

file = open("file_name.txt", 'w')
file.write(dict)
file.close()

最新更新