首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python变量不变

Python变量不变
EN

Stack Overflow用户
提问于 2018-10-10 00:44:39
回答 6查看 130关注 0票数 0

我有一个简单的for循环,它循环遍历int列表的内容,并将每个非零int相乘。我将这个值存储在变量mult中。然而,mult并没有改变。怎么了?

代码语言:javascript
复制
def answer(l):
    mult = 0
    for i in l:
        if i != 0:
            if mult == 0:
                mult *= i
    return mult

print (answer([3,4,5]))
EN

回答 6

Stack Overflow用户

发布于 2018-10-10 00:46:47

如果将mult设定为0,则mult *=anything将始终为0。尝试将其初始值设置为1

票数 3
EN

Stack Overflow用户

发布于 2018-10-10 00:53:25

代码中的错误探测语句是mult = 0,对于任何输入,最终结果都是0...使用mult = 1更改该语句

代码语言:javascript
复制
def answer(l):
    mult = 1
    for i in l:
        if i != 0:
            mult *= i
    return mult

print (answer([3,4,5]))

输出: 60

票数 2
EN

Stack Overflow用户

发布于 2018-10-10 00:54:19

正如@yourPublicDisplayName已经指出的,任何乘以0的值都是0。您习惯于在运行sums时使用0。然而,这是一个正在运行的产品。对于和,您可以从加性单位元素0开始;对于产品,您必须从乘性单位元素1开始。

此外,不要检查您的变量是否仍处于起始值(mult == 0):这只会使您在一个元素处停滞不前:一旦更改了该值,就不会再包含任何非零数。更简单地说:

代码语言:javascript
复制
def answer(l):
    mult = 1
    for i in l:
        if i != 0:
            mult *= i
    return mult

print (answer([3,4,5]))

输出:

代码语言:javascript
复制
60
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52725743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档