2017-09-27 612 views
0

我的程序的目的是确定一定数量连续数字的最大乘积。例如,程序会提示用户输入一串数字(例如255969406)和连续数字(3)的大小,因此我的程序将确定提供的数字中连续3位数的最大乘积是多少,我的程序将编译并运行但返回的产品不正确。数字中连续数字的最大乘积python

def Pro(dig,snum): 
    number = 1 
    pr = 0 
    for x in xrange(0,dig-1): 
     pr = int(snum[x]) 
     number = pr*number 
    return number 

def Product(dig,indx,snum): 
    number = 1 
    pr = 0 
    for x in xrange(1,dig): 

     pr = int(snum[indx+x]) 
     number = pr*number 
    return number 


def Main():  
    num = raw_input("Enter a string of digits") 
    dig = input("Input number of digits in group") 
    x = 1 

    val = Pro(dig,num) 
    grps = int(len(num)/ dig) 
    while x<grps: 
     val2= Product(dig,x,num) 
     if val2>val: 
       val = val2 
     x +=1 
    print("The max product of " + str(dig) +" consecutive digits in " + num + " is " + str(val)) 
if __name__ == "__main__": 
Main() 
+0

注意到我给的3组作为用户选择怎样的例子大的组是,即如果给出的数字是4586948304和用户选择4该程序应该确定什么4个连续的数字有最大的产品 –

回答

1

你可以试试这个:

x = '134214257248' 

m = 0 

for i in range(len(x) - 2): 
    m = max(m, int(x[i])*int(x[i+1])*int(x[i+2])) 

print m 

# 2*5*7 = 70 
70 

编辑:接受的连续数字的任何数量(N)

import numpy as np 

x = '134214257248' 

m = 0 
n = 3 

for i in range(len(x) - n + 1): 
    m = max(m, np.prod(list(int(l) for l in x[i:i + n]))) 

print m 

70 
+0

是否有任何方法来修改这个,所以你可以使用它与任何amoun t连续挖掘,如2或5而不是3 –