簡體   English   中英

如何在 6 個元素的列表中對 3 個數字求和?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM