Python迭代 - 查找字符串中数字乘积的问题

1 投票
3 回答
3473 浏览
提问于 2025-04-18 00:24

我想在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

让我来列出这个程序中的错误。

  1. 你在循环遍历 d,但这样做没有任何意义。你不需要这样做。

  2. s += 1 并不在 while 循环里面。所以,s 永远不会增加,这样就会导致无限循环。

  3. print (product_of_digits(a)) 在函数内部,而 a 还没有定义。

  4. 要找出所有连续 5 个数字的乘积,你不能循环到 d 的末尾。所以,循环应该是 while s <= (len(d)-5):

  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))

撰写回答