我有一个简单的for循环,它循环遍历int列表的内容,并将每个非零int相乘。我将这个值存储在变量mult中。然而,mult并没有改变。怎么了?
def answer(l):
mult = 0
for i in l:
if i != 0:
if mult == 0:
mult *= i
return mult
print (answer([3,4,5]))发布于 2018-10-10 00:46:47
如果将mult设定为0,则mult *=anything将始终为0。尝试将其初始值设置为1
发布于 2018-10-10 00:53:25
代码中的错误探测语句是mult = 0,对于任何输入,最终结果都是0...使用mult = 1更改该语句
def answer(l):
mult = 1
for i in l:
if i != 0:
mult *= i
return mult
print (answer([3,4,5]))输出: 60
发布于 2018-10-10 00:54:19
正如@yourPublicDisplayName已经指出的,任何乘以0的值都是0。您习惯于在运行sums时使用0。然而,这是一个正在运行的产品。对于和,您可以从加性单位元素0开始;对于产品,您必须从乘性单位元素1开始。
此外,不要检查您的变量是否仍处于起始值(mult == 0):这只会使您在一个元素处停滞不前:一旦更改了该值,就不会再包含任何非零数。更简单地说:
def answer(l):
mult = 1
for i in l:
if i != 0:
mult *= i
return mult
print (answer([3,4,5]))输出:
60https://stackoverflow.com/questions/52725743
复制相似问题