Python 分配职位
我做了4份书面陈述,得到了1份与其他人不同的答案。有人能解释一下“0”的答案吗。 另外,如果“product=1”放在“for i in”的前面,那么循环只运行1次,我也不理解Python 分配职位,python,variable-assignment,assign,Python,Variable Assignment,Assign,我做了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)
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
关于您的第一个问题(1)为什么在外观之后为产品打印零? 您没有打印完整字符串
s
,但我假设您在最后13位中至少有一个零。如果有一个零,它将导致整个产品为零
(2)如果产品高于第一个for循环,为什么它只运行一次?
这里有两件事结合在一起:
-该乘积只被初始化一次,因此下一个数与最后一个结果相乘
-您在14
处有一个零,因此执行一次后,乘积将乘以零,最终结果为零,它将永远不会大于最大乘积
例如,在第一次迭代中,
product=1
与它们相乘后,它是5000940
,这比largestProduct
大,因此它被写入命令行。接下来,最后一个数字是零,乘积不再设置为1,而是保留上一个值,与零相乘后,乘积为零,无论下一个数字是什么,它都将保持为零。欢迎使用SO!不幸的是,您的代码不允许重现问题。请确保在提交问题时提供答案。您想表达什么?