[英]Python code for multiplying adjacent digits of a big number and finding maximum possible product, not giving desired result
這是一個Python代碼,用於查找可以從一個數字的13個相鄰數字獲得的最大乘積。 沒有錯誤信息,但是該程序沒有提供所需的輸出。 我每次都得到(repl.it) 1
,盡管很明顯答案不是1
。 我是編程新手。
我的嘗試
我已經將數字轉換為字符串,並將其存儲到數組中以逐元素獲取。 遍歷所有數字的外部for循環(最后一次當i
值是len(n)-12
, i+j
將到達數組的最后一個條目。(盡管數組以相反的順序存儲數字,但我沒有t可以將其逆轉,因為我們不需要這樣做。
n = "123899778978978787888787778788767677667"
arr = []
for i in range(len(n)):
arr.append(int(n)%10)
n = str(int(n)//10)
mul = 1
max_mult = 1
for i in range(len(n)-12):
for j in range(13):
mul = mul * int(arr[i+j])
if(max_mult<mul):
max_mult = mul
print(max_mult)
誰能告訴我我要去哪里錯了? 任何幫助將不勝感激。
您可以使用zip
簡化您的邏輯:
n_list = list(map(int, list(n)))
res = max(i * j for i, j in zip(n_list, n_list[1:])) # 81
如果您堅持使用for
循環:
n_list = list(map(int, list(n)))
max_mult = 0
for i, j in zip(n_list, n_list[1:]):
mult = i * j
if mult > max_mult:
max_mult = mult
print(max_mult) # 81
請注意,您可以修改現有的基於range
的迭代,但這不被視為Pythonic:
for i in range(len(n_list) - 1):
mult = n_list[i] * n_list[i+1]
if mult > max_mult:
max_mult = mult
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.