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中每个数字的每一行。如果该数字在该行中,则应打印该行。我一直得到错误:列表索引必须是整数或切片,而不是浮点数。任何人都可以帮助我,对不起,我是编程新手。
这是txt文件的内容:
alex .34
donny .41
jeezy .31
lonny .11
gonny .31
monty .53
pip .65
答案 0 :(得分:0)
我不太确定你的意思。如果你在
时得到正确的分数print(scorelist)
然后您应该看到并非所有分数都是整数,即某些分数具有小数点。让我们说
scorelist = [1, 2, 3.5]
当您遍历分数列表
时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)