Python迭代 - 在字符串中查找数字产品的问题

时间:2014-03-29 03:17:35

标签: python loops iterator

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

3 个答案:

答案 0 :(得分: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,但无处使用。

  6. 所以,纠正的程序看起来像这样

    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是数字。