Python line.split只作用于一行

时间:2014-11-27 05:45:04

标签: python python-2.7

我有一个高分列表(保存在文本文件中作为分数,空格,名称(无逗号))。但是,当我去检索数据时,只显示第一行被读取。

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。

1 个答案:

答案 0 :(得分:4)

    if int(current_data) > highscore:
        highscore = current_data

在这里,您将当前的高分转换为数字,但将其存储为未转换的字符串。下一个循环,您将下一个高分作为数字与先前保存的字符串进行比较。

我不知道比较数字&gt; string在Python中有效,但它是合法的语法并且返回 False ,所以你永远不会在第一个之后保存更高的高分。

编辑:现在我知道了,这很有趣但与此答案无关。 https://stackoverflow.com/a/3270689/478656https://stackoverflow.com/a/2384139/478656