簡體   English   中英

Python沒有正確總結列表

[英]Python not summing list correctly

Python 不會對列表中的所有項目求和。 我做錯了什么?

我正在嘗試制作一個計算輸入數字平均值的程序,看起來len()工作正常,但sum()只是對一些數字求和。

numbers = []
More = True

while More:
    xInp = input('Number: ')
    yInp = input('Again?(y/n) ')
    if yInp == 'y':
        numbers.append(int(xInp))
    elif yInp == 'n':
        break

print(sum(numbers))
print(len(numbers) + 1)
print(sum(numbers) / int(len(numbers) + 1))

問題在於順序,您在不考慮輸入的最后一個值的情況下退出程序。 稍微改變順序將幫助您解決問題。 此外要小心撇號和雙撇號,我也在答案中對其進行了編輯,否則它將返回SyntaxError

numbers = []

while True:
    xInp = input('Number: ')
    numbers.append(int(xInp))
    yInp = input('Again?(y/n) ')
    if yInp == 'y':
        pass
    elif yInp == 'n':
        break

print(sum(numbers))
print(len(numbers))
print(sum(numbers) / int(len(numbers)))

如果用戶在下一個提示中選擇y ,您的代碼只會將最近輸入的數字添加到數組中。 一旦他們輸入n ,最后輸入的數字就不會附加到列表中。

您需要在輸入數字后立即附加該數字,然后檢查用戶是否想要添加更多。

numbers = []

while True: # No need for a variable here
    xInp = input("Number: ")
    numbers.append(int(xInp))
    yInp = input("Again? (y/n): ")
    if yInp == "y":
       pass
    elif yInp == "n":
        break

print(sum(numbers))

按照慣例,變量以小寫字母開頭。 大寫首字母用於類定義(不是實例)。 我原本是將More改為more ,但正如評論中提到的,它甚至沒有必要,所以我將其替換為while True

您錯過了多個值中的最后一個值。

numbers = []
More = True

while More:
    xInp = input('Number: ')
    yInp = input('Again?(y/n) ')
    if yInp == 'y':
        numbers.append(int(xInp))
    elif yInp == 'n':
        if xInp:
            numbers.append(int(xInp))
        break

print(sum(numbers))
print(len(numbers))
print(sum(numbers) / int(len(numbers)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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