我有一个高分列表(保存在文本文件中作为分数,空格,名称(无逗号))。但是,当我去检索数据时,只显示第一行被读取。
for line in previous_scores:
data = line.split()
current_data = data[0]
if int(current_data) > highscore:
highscore = current_data
highscore_names = [data[1]]
elif int(current_data) == highscore:
highscore_names.append(data[1])
例如,使用以下数据:
2 James
3 Anna
5 Emily
这将是詹姆斯的得分,他的得分为2。
如果我的代码有问题,请告诉我出了什么问题,如果真的很棒的话,那就解决了。我不介意是否有更好的方法来做到这一点。
编辑:
该文件以:
previous_scores = open("Scores.txt", "a+")
编辑2:
我在最后添加了一些额外的行,并将测试代码更新为以下内容:
for line in previous_scores:
data = line.split()
current_data = data[0]
print "1 " + data[0]
print "2 " + current_data
if int(current_data) > highscore:
print "3 " + current_data
highscore = current_data
highscore_names = [data[1]]
elif int(current_data) == highscore:
print "4 " + current_data
highscore_names.append(data[1])
elif int(current_data) < highscore:
print "5 " + current_data
第一个得分总是返回1,2和3,然后所有其他得分返回1,2和5。
答案 0 :(得分:4)
if int(current_data) > highscore:
highscore = current_data
在这里,您将当前的高分转换为数字,但将其存储为未转换的字符串。下一个循环,您将下一个高分作为数字与先前保存的字符串进行比较。
我不知道比较数字&gt; string在Python中有效,但它是合法的语法并且返回 False ,所以你永远不会在第一个之后保存更高的高分。
编辑:现在我知道了,这很有趣但与此答案无关。 https://stackoverflow.com/a/3270689/478656和https://stackoverflow.com/a/2384139/478656