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

标签 python loops iterator

尝试在 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))  

最佳答案

让我列出程序中的错误。

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

关于Python 迭代 - 查找字符串中数字的乘积的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726553/

相关文章:

css - 循环变量中的 SASS 循环

java - 如何输出与其大写长度相连的字符串

java - Libgdx 使矩形移动

Java多线程和迭代器,应该很简单,初学者

c++ - std::unique 是否使 vector 迭代器无效?

python - 如何查找两个 pandas 数据框之间更新的行

python - 如何使用 requests.post (Python) 发送数组? "Value Error: Too many values to unpack"

python S60应用接入

python - 使用错误 : unrecognized arguments: in %R line

python - 在没有第一个和最后一个元素的情况下循环字典