我試圖學習Python,我就死在我的實踐問題之一。追加,平均列表,字典,關鍵
- 回答*第一個問題:我明白如何獲得列表的平均值,但是有更好的循環使用嗎?
第二個問題:在我的第二個函數中,爲什麼我不在x
中追加大於零的int
?
說明:
實現以下三個功能(你應該使用合適的 循環結構來計算平均值):
- allNumAvg(numList):採用數字和返回值列表列表中所有數字的平均值。
- posNumAvg(numList):取號的列表,並在大於零列表返回所有數的平均值。
- nonPosAvg(numList):取號的列表,並返回列表中的所有的小於或等於零的數的平均值。
編寫一個程序,要求用戶輸入一些數字(正數, 負數和零)。你的程序不應該要求用戶輸入一個固定數量的號碼 。此外,它不應該要求用戶想要輸入的數字 。而是應該要求用戶輸入 幾號,用-9999(警戒值)結束。用戶 可以按任何順序輸入數字。你的程序應該不問 用戶輸入的正,分別負數。
你的程序然後應該創建與數字的列表中輸入(請 確保不包括在此列表中的標記值(-9999))和 輸出列表並使用以下鍵值對 字典(使用輸入列表和上述功能):
- 密鑰=「AvgPositive」:值=所有的正數
- 密鑰=「AvgNonPos」平均:值=所有的非正的平均數字
- Key ='AvgAllNum':Value = av所有的數字樣品運行erage:
輸入號碼(-9999至結束):4輸入號碼(-9999至結束):-3 輸入號碼(-9999至結束):-15輸入數字(-9999結束):0 輸入數字(-9999結束):10輸入數字(-9999結束):22 輸入數字(-9999結束):-9999
輸入所有數字的名單是:
[4, -3, -15, 0, 10, 22]
與平均值的字典是:
{'AvgPositive': 12.0, 'AvgNonPos': -6.0, 'AvgAllNum': 3.0}
def nums():
values = []
while -9999 not in values:
x = int(input("Enter any amount of numbers or -9999 to quit: "))
values.append(x)
values.remove(-9999)
return values
def allNumAvg(values):
average = 0
sum = 0
for n in values:
sum = sum + n
average = sum/len(values)
return average
def posNumAvg(values):
x = []
average = 0
sum = 0
if int in values > 0:
x.append(int)
print(x)
print(posNumAvg(nums()))
感謝您的編輯。更可讀。 – TYPKRFT
對不起,我很好奇,如果有更好的循環使用。 – TYPKRFT
爲什麼不只是'返回總和(值)/ len(值)'? –