python循环中明明都是int却报错说是str是为什么?

img


如图,报错显示我那一行有int和str,但是表示的不都是int吗?
要求是输入列表ls,输出列表lt,要求列表lt中第i个元素等于ls中除了ls[i]外所有元素的乘积。
我这样的代码应该如何修改?错误的原因是什么呢

for in循环只读不写,所以那里写i=...是没用的,可以用下标运算符修改列表:

for i in range(len(ls)):
    ls[i] = int(ls[i])
    n *= ls[i]

你题目的原意是不是把输入的数字串,转化为各位上数字的列表,然后求出总乘积分别是各元素的倍数

使用map()函数:
ls = list(map(int,input()))

所有元素的积用reduce()函数
from functools import reduce
n = reduce(lambda x,y:x*y,ls)

最后求倍数列表:
lt = list(map(lambda x:n//x, ls))

如有帮助,请给个采纳。谢谢

问题出在第1行。

无论如何,input 函数总是返回 str ,再把 str 转为 list 得到 list[str] ,访问其中的元素时取到的当然是 str 。


Tips 1:请使用代码块功能上传代码
Tips 2:如果某一行报错了,可以试试在报错之前输出这一行用到的变量信息,以便排查 bug