我遇到了一個問題,我必須創建一個演算法,該演算法采用任何給定的偶數長度輸入整數,并根據輸入確定前 n 位數字的總和是否等于后 n 位數字的總和,其中每個 n 等于數字的長度除以 2(例如 2130 回傳 True,3304 回傳 False)。
我的解決方案有效但相當笨拙,如下所示:
def ticket(num):
list_num = [int(x) for x in str(num)]
half_length = int(len(list_num)/2)
for i in range(half_length*2):
first_half = list_num[0:half_length]
second_half = list_num[half_length::]
if sum(first_half) == sum(second_half):
return True
else:
return False
為了提高我對串列理解的理解,我試圖尋找可以提高效率的方法,但我正在努力做到這一點。任何指導將不勝感激。
編輯:
感謝 jarmod:重組如下:
def ticket(num):
list_num = [int(x) for x in str(num)]
half_length = int(len(list_num)/2)
return sum(list_num[0:half_length]) == sum(list_num[half_length::])
票(1230)
uj5u.com熱心網友回復:
您可以洗掉不必要的分配和回圈以創建更短、更Python的解決方案:
def ticket(num):
half_length = int(len(list_num)/2)
first_half = sum(list(num[:half_length]))
second_half = sum(list(num[half_length:]))
return first_half == second_half
它可以進一步縮短,但不那么可讀:
def ticket(num):
return sum(list(num[:len(num)//2])) == sum(list(num[len(num)//2:]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505865.html