Python列表运算报错:can't multiply sequence by non-int of type 'float'
问题解决
错误原因
报错can't multiply sequence by non-int of type 'float'是因为你试图直接对列表bottles乘以浮点数0.1——Python中只有整数和列表相乘会重复列表元素,浮点数不能和列表做乘法操作,而你实际需求是把列表里的每个元素先乘以0.1,再求和。
修正方案
把求和的那一行代码修改为对列表中每个元素单独乘0.1后再求和,有两种写法:
写法1(推荐,更高效)
用生成器表达式传入sum():
print(sum(x * 0.1 for x in bottles))
写法2(列表推导式)
先生成每个元素乘0.1的新列表,再求和:
print(sum([x * 0.1 for x in bottles]))
完整修正后的代码
bottles = [] while True: option = str(input('would you like to continue? yes or quit ')) # 修正拼写错误contiune→continue if option == 'yes': bottles = [float(input("enter a number: ")) for _ in range(7)] print(sum(x * 0.1 for x in bottles)) # 修正求和逻辑 if option == 'quit': quit("you get no payment")
额外说明:你代码里的contiune是拼写错误,改成continue更规范;float(sum(...))没必要,因为sum计算后的结果已经是浮点数,可直接打印。
内容的提问来源于stack exchange,提问作者jones007
相关产品推荐
相关产品推荐

