2015-12-06 2 views
-1
import heapq 

def main(): 
     with open("highscores.txt", "r+")as file: 
     file.seek(0) 
     scores = file.readlines() 

    scorelist = [] 
    for line in scores: 
     raw = line.split() 
     score = float(raw[1]) 
     scorelist.append(score) 
    print(scorelist) 
    topfive = heapq.nsmallest(5,scorelist) 
    print(topfive) 
    for i in scorelist: 
     for line in scores: 
      if scorelist[i] in line: 
       print(line) 
main() 

Здравствуйте,Поиск по номеру из списка в строке, печать эта линия

Я пытаюсь искать каждую строку в текстовом файле для каждого номера в списке topfive. Если это число находится в строке, строка должна быть напечатана. Я продолжаю получать ошибку: индексы индексов должны быть целыми числами или срезами, а не плавать. Может кто-нибудь мне помочь, извините, я новичок в программировании.

Это содержимое текстового файла:

alex .34 
donny .41 
jeezy .31 
lonny .11 
gonny .31 
monty .53 
pip .65 

ответ

0

Я не совсем уверен, что вы собираетесь. Если вы получаете правильные результаты, когда вы

print(scorelist) 

, то вы должны увидеть, что не все оценки являются целыми числами то есть некоторые из них десятичной точки. Допустим,

scorelist = [1, 2, 3.5] 

когда вы перебирать scorelist

for i in scorelist: 
    print i 

вы должны получить

1 

2 

3.5 

тогда, когда вы звоните

scorelist[i] 

3.5 вызывает ошибку. Надеюсь, это поможет

Редактировать: Это может вам помочь. Итерация через список в python вернет элемент списка каждой итерации. Вы не получаете индекс с i. На самом деле вам даже не нужна индексация

for score in scorelist: 
    for line in scores: 
     if score in line: 
      print(line) 
Смежные вопросы