![](/img/trans.png)
[英]How to group by and sum when all elements of one list are in another list
[英]How does one sum 3 numbers in a list of 6 elements?
例如,我們有一個 6 位數字,我們必須將它的兩半相加(比如 123456,我們得到 1 + 2 + 3 和 4 + 5 + 6)。 這是我嘗試為其編寫的程序:
ticket = int(input("Input your ticket : ")) #ticket input
ticket_list = [int(i) for i in str(ticket)] #make a list
length = len(ticket_list)
mid = length//2
half1 = ticket_list[:mid]
half2 = ticket_list[mid:] #split the list in two halves
def sum3digits1(mysum): #sum of 1st half
mysum=0
for i in range(half1):
mysum+=int(i)
return mysum
def sum3digits2(suma): #sum of 2nd half
suma=0
for i in range(half2):
suma+=int(i)
return suma
a = sum3digits1(ticket_list)
b = sum3digits2(ticket_list)
print(a, b)
但是,它顯示我的程序出錯了,但我真的不知道應該修復什么。 我嘗試將 range() 用於 3 個元素的總和,但效果不佳。 任何幫助將不勝感激!
既然你已經有了應該工作的例子,我就添加一個解釋: range() 將給你兩個數字之間的所有數字。 (看看https://www.w3schools.com/python/ref_func_range.asp )如果你只給它一個參數,它會從 0 開始並嘗試給你每個數字(以標准間隔 1,除非您另外指定)直到您給它的數量(雖然不是它)。 但是你給了它一個數字列表,而不是它預期的數字。
同樣作為一個建議,我是否建議您不要在代碼中重復自己:例如 sum3digits1 和 sum3digits2 是相同的函數,因此您可以將其命名為 sum3digits 或什至 sum_digits 並重用它。 :-)
嘗試這個:
def sum_half(lst):
return sum(lst[:len(lst)//2]), sum(lst[len(lst)//2:])
輸出:
>>> ticket_list = [1,2,3,4,5,6]
>>> sum_half(ticket_list)
(6, 15)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.