2017-09-26 52 views
0

该函数应该接受一串数字(snum),然后它应该从(indx)开始,然后从那个(indx)开始并乘数下一个(挖掘)数量的数字并返回值。这是目前的功能应该返回72,但它是返回41472.谢谢!Python循环在字符串中的位数相乘时返回错误的值

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

为什么你需要两个循环?如果我理解正确,你应该这样做:'在范围内(indx + 1,index + dig):'。 – Maroun

+0

这是绝对正确的。谢谢! – Ajlec12

回答

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并相乘。