Python循环在乘以字符串中的数字时返回错误的值

时间:2017-09-26 15:36:48

标签: python

这个函数应该取一串数字(snum),然后它应该从(indx)开始,然后从那个(indx)开始并乘以下一个(数字)数字并返回值。这是当前的功能应该返回72但它返回41472.谢谢!

def product(dig, indx, snum):
    length = int(len(snum))
    int(indx)
    int(dig)
    total = int(snum[indx])

    for k in range((indx + 1), length):
        for i in range(0, dig):
            total = total * int(snum[k])

    else:
        return total


x = product(3, 5, '72890346')

print(x)

1 个答案:

答案 0 :(得分:1)

以下应该这样做:

def product(dig, indx, snum):
   mul = 1
   for s in snum[indx : indx+dig+1]:     #Note the `dig+1`
      mul *= int(s)                      #multiply the number

   return mul

驱动程序代码:

x = product(3, 5, '72890346')
print(x)
#72

在您的代码中,逻辑几乎没有问题。你不需要两个循环。在这里,我们使用slicing操作来获取indxindx+dig之间的字符,然后将string转换为int并乘以。