2016-04-12 4 views
2
scores = [] 
surfers = [] 
results_f = open("results.txt") 

for each_line in results_f: 
    (name,score) = each_line.split() 
    scores.append(float(score)) 

for line in results_f:      
    (name,score) = line.split() 
    surfers.append(name) 

results_f.close() 
scores.sort(reverse = True) 
print("The high scores are : ") 
print("1 - "+str(scores[0])) 
print("2 - "+str(scores[1])) 
print("3 - "+str(scores[2])) 

print(surfers[0]) 

Просто экспериментальная программа. Но второй для цикла, похоже, не работает. Если я переключаю позиции циклов for; снова петля во второй позиции не будет работать. Почему это происходит?Python: второй цикл петли не работает

ответ

6

Файлы отсутствуют. Вы не можете зацикливаться на них, не перематывая объект файла, поскольку позиция файла не возвращается к началу, когда вы закончили чтение.

Вы можете добавить results_f.seek(0) между петлями:

for each_line in results_f: 
    (name,score) = each_line.split() 
    scores.append(float(score)) 

results_f.seek(0) 

for line in results_f:      
    (name,score) = line.split() 
    surfers.append(name) 

но вы бы гораздо лучше, не зацикливание дважды. У вас уже есть информация name в первом цикле. Просто петля раз:

for each_line in results_f: 
    (name,score) = each_line.split() 
    scores.append(float(score)) 
    surfers.append(name) 

Ваш код только сортирует список scores; список surfers не последует примеру. Если вам нужно сортировать имена и оценки вместе, поместите свои имена и баллы вместе в список; если поставить оценку первым вам даже не нужно говорить sort ничего особенного:

surfer_scores = [] 

for each_line in results_f: 
    name, score = each_line.split() 
    surfer_scores.append((float(score), name)) 

surfer_scores.sort(reverse=True) 
print("The high scores are : ") 
for i, (score, name) in enumerate(surfer_scores[:3], 1): 
    print("{} - {}: {}".format(i, name, score) 
+0

Спасибо, просто было интересно, о второй цикл не работает, на которые вы уже ответили. – Vasanth

+0

Благодарим вас за дополнительную информацию, очень полезно. – Vasanth

+0

Все еще удивлен. Как можно было разместить два элемента данных в одном месте в списке? – Vasanth