该代码用于查找1000位数字的13个连续数字的最大可能乘积。当我尝试在IDLE上运行它时,它只是提供了RESTART以及我保存.py文件的目录。当我在Pycharm上尝试此操作时(我知道它不是IDE的问题,但我只需要尝试),没有输出。难道我做错了什么?

n=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
s=[]
j=13
def product(j):
    p = 1
    for i in range(j,j+13):
        p=p*s[i]
    return(p)
for i in range(0,1000):
    s=s+[n%10]
    n=n//10
k = product(0)
c=k
while j<1000:
    if s[j]==0:
        j=j+1
        c=product(j)
        while c==0:
            j=j+13
            c=product(j)
    else:
        c=(c*s[j+13])/s[j]
    if c>k:
        k=c
print(k)

最佳答案

您的原始代码可以简化为以下内容。



n=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450

def product(j):
    p = 1
    for i in range(j,j+13):
        p=p*s[i]
    return(p)
s=[]
for i in range(0,1000):
    s=s+[n%10]
    n=n//10
k = 0
N = len(s)
j = 0
while j<N-13:  #need to 13 elements before end
    c = product(j)
    if c>k:
        k=c
    j = j + 1
print(k)



结果:23514624000
即使不通过以下方法求助于Numpy,也可以更轻松地生成该文件:


digits = str(n) # generates digits of number
products = [product(j) for j in range(1000-13)] # list comprehension
                                                # uses you product function
print(max(products))

10-04 20:13