想问一下这个小程序的问题出在哪儿,我在想程序在遍历list的时候会把‘[’算进去吗,命令提示符里的报错让我有点奇怪
input函数会将收集到的所有数据都放到字符串中,也就是说比如你通过命令行输入的是[1,2,3],那么执行完毕后,L的值是'[1,2,3]',所以直接传给prod函数的话就会报这个错。解决方法就是先通过eval()函数将其转化为原来的类型再计算,具体到代码就是进行如下修改:
print(prod(eval(L)))
有帮助的话,请点采纳
看下input的行列是不是有什么多余的字符等
应该是因为仅使用input()函数还没有把输入的数变成列表,可以使用list()函数等把输入的数变成列表,再传入函数prod即可,修改如下:
参考链接:
from functools import reduce
def prod(L):
def f(x,y):
return float(x)*float(y)
# https://www.runoob.com/python/python-func-reduce.html
return reduce(f,L)
L=input('L=')
# https://blog.csdn.net/qq_40797015/article/details/112171892
nums = list(L.split()) #把输入的字符串分隔后转为列表
print(prod(nums))