尝试在 python 中迭代数字字符串并打印前 5 个数字的乘积,然后是第二个 5,然后是第三个 5,依此类推。不幸的是,我只是不断地获取前 5 个数字的乘积并超过。最终我会将它们添加到一个列表中。为什么我的代码卡住了?
编辑:原始数字是整数,所以我必须将其设为字符串
def product_of_digits(number):
d= str(number)
for integer in d:
s = 0
k = []
while s < (len(d)):
print (int(d[s])*int(d[s+1])*int(d[s+2])*int(d[s+3])*int(d[s+4]))
s += 1
print (product_of_digits(a))
最佳答案
让我列出程序中的错误。
您毫无意义地迭代
d
。你不需要那个。s += 1
不是 while 循环的一部分。因此,s
永远不会增加,从而导致无限循环。print (product_of_digits(a))
位于函数本身内部,其中a
未定义。要查找所有连续 5 个数字的乘积,您不能循环直到
d
末尾。所以,循环应该是while s <= (len(d)-5):
您已初始化
k
,但没有使用它。
因此,更正后的程序如下所示
def product_of_digits(number):
d, s = str(number), 0
while s <= (len(d)-5):
print(int(d[s]) * int(d[s+1]) * int(d[s+2]) * int(d[s+3]) * int(d[s+4]))
s += 1
product_of_digits(123456)
输出
120
720
您还可以使用 for 循环,如下所示
def product_of_digits(number):
d = str(number)
for s in range(len(d) - 4):
print(int(d[s]) * int(d[s+1]) * int(d[s+2]) * int(d[s+3]) * int(d[s+4]))
关于Python 迭代 - 查找字符串中数字的乘积的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726553/