我无法通过数值对.txt文件进行排序。我附上了代码,并试图让它按分数排序, 我也无法将每个新分数打印到txt文件中的新行。
def Highscore():
name = input("What is your name for the scoreboard?")
newhighscore =(name, highscore)
newline = ("\n")
HighscoreWrite = open ("highscore.txt", "a")
HighscoreWrite.write(highscore )
HighscoreWrite.write(name )
HighscoreWrite.write("\n")
HighscoreWrite.close()
HighscoreRead = open("highscore.txt", "r" )
ordered = sorted(HighscoreRead)
print (ordered)
print (HighscoreRead.read())
#print (newhighscore)
HighscoreRead.close()
retry = "Yes"
while retry == "Yes":
print ("Welcome to this quiz.\n")
score = 0
attempt = 0
while score < 10:
correct = Question()
if correct:
score += 1
attempt += 1
print ("Well done, You got it right")
else:
print ("Good try but maybe next time")
attempt += 1
highscore = score, ("/") ,attempt
highscore = str(highscore)
message = print ("You scored", (score), "out of ",(attempt))
Highscore();
retry = input("Would you like to try again? Yes/No")
答案 0 :(得分:1)
为了以数字方式对文件进行排序,您必须创建一个key(line)
函数,该函数将一行作为参数并返回分数的数值。
假设highscore.txt是一个文本文件,其中每行以数字值开头,后跟空格,key
函数可以是:
def key_func(line):
return int(line.lstrip().split(' ')[0])
然后,您可以使用ordered = sorted(HighscoreRead, key = key_func)
由于它是单行函数,您还可以使用lambda:
ordered = sorted(HighscoreRead, key= (lambda line: int(line.lstrip().split(' ')[0])))