【问题标题】:Assignment position分配职位
【发布时间】:2020-05-09 22:47:41
【问题描述】:

我做了 4 个打印声明,得到了 1 个与其他答案不同的答案。有人可以解释一下“0”的答案吗? 另外,如果将“product = 1”放在“for i in”之上,那么循环只会执行 1 次,我也不明白。

s = "73167176531330624919225119674426..." # 1000 digit number

largestProduct = 0
for i in range(0, len(s) - 13):

    product = 1

    for j in range(i, i + 13):
        product *= int(s[j])

    if product > largestProduct:
        largestProduct = product
        print(product)
        print(largestProduct)

print(product)
print(largestProduct)

>> answers
23514624000
23514624000
0
23514624000

【问题讨论】:

  • 欢迎来到 SO!不幸的是,您的代码不允许重现问题。请务必在提交问题时提供MWE
  • 你想达到什么目的?

标签: python variable-assignment assign


【解决方案1】:

关于您的第一个问题(1) 为什么在外观之后会为产品打印零?

您没有打印完整的字符串s,但我假设您在最后 13 位数字中至少有一个零。如果有一个零,它将导致整个产品为零。

(2) 为什么产品在第一个 for 循环之上时只运行一次? 这里有两件事: - 产品只被初始化一次,因此所有下一个数字都与最后一个结果相乘 - 你在14有一个零,所以在执行一次之后,乘积将乘以零,你最终会得到一个零,它永远不会大于largestProduct

例如,在您的第一次迭代中 product = 1 和它们相乘后是 5000940,这大于 largestProduct所以它被写入命令行。接下来最后一位是零,乘积不再为1,而是保持之前的值,与零相乘后乘积为零,无论下一个数字是多少,它都保持为零。

【讨论】:

    猜你喜欢
    • 2015-04-07
    • 2015-03-18
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多