尝试在python中迭代一个数字字符串并打印前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))
答案 0 :(得分:2)
让我列出该计划中的错误。
您正在迭代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]))
答案 1 :(得分:1)
您的代码存在一些问题:
1)您的s+=1
缩进不正确
2)它应该是s+=5
代替(假设您想要1-5,6-10,11-15等产品,否则s + = 1就可以了)
def product_of_digits(number):
d = str(number)
s = 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 += 5 (see point 2)
print (product_of_digits(124345565534))
答案 2 :(得分:0)
numpy.product([int(i)for i in str(s)])
其中s是数字。