gpt4 book ai didi

python - 错误 : list indices must be integers not float

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:04 24 4
gpt4 key购买 nike

下面的代码应该从学生的字典中获取分数列表并计算学生的平均分数。我收到“类型错误:列表索引必须是整数,而不是 float ”错误。

alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}

# Averege function is given below for calculating avg
def average(lst):
l=float(len(lst))
total = 0.0
#code works till here the error occoured below
for item in lst:
add = int(lst[item])
print add
total+=add
return total//l

print average(alice['tests'])
print alice['tests']

最佳答案

问题出在这一行:

for item in lst:
add = int(lst[item])

for item in lst 遍历列表中的每个 item,而不是索引。所以item就是列表中float的值。而是试试这个:

for item in lst:
add = int(item)

此外,没有理由转换为整数,因为这会扰乱您的平均值,因此您可以将其进一步缩短为:

for item in lst:
add = item

这意味着 for 循环可以缩短为:

for item in lst:
total+= item

这意味着我们可以使用 sum 进一步缩短它内置:

total = sum(lst)

由于 total 现在是一个 float ,我们不需要使用双斜杠指定 float 除法,我们也不再需要将长度转换为 float ,所以函数变为:

def average(lst):
l=len(lst)
total = sum(lst)
return total/l

最后,没有理由不在一个易于阅读的行上完成所有这些:

def average(lst):
return sum(lst)/len(lst)

关于python - 错误 : list indices must be integers not float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20963853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com