Python迭代 - 查找字符串中数字乘积的问题
我想在Python中遍历一个数字字符串,打印出前五个数字的乘积,然后是第二组五个数字,再到第三组五个数字,依此类推。可是,我的代码一直只输出前五个数字的乘积,反复出现这个结果。最后我会把这些结果添加到一个列表里。为什么我的代码卡住了呢?
补充说明:原始数字是一个整数,所以我得把它转换成字符串。
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))
3 个回答
0
这段代码的意思是:先把一个数字s转换成字符串,然后把这个字符串里的每个字符都变成整数,最后计算这些整数的乘积。
简单来说,就是把数字s的每一位都拿出来,变成数字后相乘。
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) 你的 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))