2017-09-27 609 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 –