У меня есть список рекордов (сохраненных в текстовом файле как оценка, пробел, имя (без запятых)). Однако, когда я пытаюсь получить данные, появляется только первая строка.Python line.split действует только на одну строку
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.
Если мой код неправильно могли бы вы сказать мне, что не так, и если вы действительно устрашаете, исправьте это. Я не возражаю, если есть лучший способ сделать это.
Edit:
Файл открывается с:
previous_scores = open("Scores.txt", "a+")
Edit 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.
Как вы открываете файл и читаете, можете ли вы показать, что – Hackaholic
Нам нужно знать, что находится в previous_scores - IE, как вы его получили. Нам также нужно знать, какова начальная стоимость рекорда. См. Http: // stackoverflow/help/mvce. – GreenAsJade
Вы также можете сэкономить вам и нам массу неприятностей, поставив инструкции печати после каждой строки, чтобы доказать себе, что то, что вы считаете значением каждой «вещи», действительно является тем, чем оно является. Когда вы это сделаете, вы, скорее всего, решите свою проблему. – GreenAsJade