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