2013-11-27 9 views
0

我正在處理Python任務,並且完全卡住了。任何援助將不勝感激。我知道這可能不像我腦海中那麼複雜......細節如下。非常感謝。使用列表和鍵的Python數量平均值

實現以下三個功能(你應該使用合適的循環結構來計算平均值):

allNumAvg(numList):取號的列表,在列表返回所有數的平均值。

posNumAvg(numList):獲取數字列表並返回列表中大於零的所有數字的平均值。

nonPosAvg(numList):獲取數字列表並返回列表中小於或等於零的所有數字的平均值。

編寫一個程序,要求用戶輸入一些數字(正數,負數和零)。你的程序不應該要求用戶輸入固定數量的數字。它也不應該要求用戶想要輸入的號碼的數量。但是它應該要求用戶輸入一些數字並以-9999(一個定點值)結尾。用戶可以按任何順序輸入數字。您的程序不應要求用戶分別輸入正數和負數。

然後,您的程序應該創建一個輸入數字的列表(確保不要在此列表中包含sentinel值(-9999)),並使用以下鍵值對輸出列表和字典(使用輸入列表,並且上述功能):

密鑰=「AvgPositive」:值=所有的正數

密鑰=「AvgNonPos」的平均:值=所有的非正數的平均

Key ='AvgAllNum':Value =所有數字的平均值

樣品運行:

輸入號碼(-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}

編輯:這是我到目前爲止,我做了相當快,只是爲了有一個工作,但我不知道如何實現鍵/字典像任務要求。再次感謝任何幫助。

print("This program takes user-given numbers and calculates the average") 
counter = 0 
sum_of_numbers = 0 

first_question = int(input('Please enter a number. (Enter -9999 to end):')) 

while first_question != -9999 : 
    ent_num = int(input('Please enter a number. (Enter -9999 to end):')) 
    sum_of_numbers = sum_of_numbers + ent_num 
    counter = counter + 1 
    first_question = int(input('Please enter a number (Enter -9999 to end):')) 

print("Your average is " + str(sum_of_numbers/counter)) 
+0

這個問題似乎強烈暗示您應該將這些數字放在列表中,後處理列表中,而不是在輸入循環中進行計算。那麼快速瀏覽可用於列表操作的函數(例如'sum()')應該使得這很容易......列表推導使它更容易...... – twalberg

回答

0

歡迎來到Python編程和一般編程!

從你的代碼中,我假設你不完全熟悉Python列表,字典和函數以及如何使用它們。我建議你看看這些教程;知道如何使用它們會使您的任務變得更容易。

這裏有一些教程,我發現了一些快速的搜索,這可能有助於: Dictionary TutorialList TutorialFunction Tutorial

當你的任務說,使三大功能,你應該做的實際功能,而不是試圖以適應將功能引入您的循環。例如,下面是一個簡單的函數,它在數量和增加了5到它,然後返回它:

def addFive(number): 
    return number + 5 

要在代碼中使用它,你就會有這樣的事情:

num = 6 # num is now 6 
num = addFive(num) # num is now 11 

因此,您應該做的是創建一個包含用戶輸入的所有數字的列表對象,然後將該對象傳遞給三個單獨的函數 - posNumAvg,nonPosAvg,allNumAvg。

創建鍵值對字典非常簡單 - 首先創建字典,然後用適當的值填充它。例如,這裏是我會怎樣創建一個字典像{「你好」:「世界」}

values = {} 
values['Hello'] = 'World' 
print(values) # Will print out {'Hello': 'World'} 

因此,所有你需要做的是爲每一個你所需要的三個值,指定函數的結果調用相應的密鑰。

如果你覺得這個任務不夠用,你可以再次閱讀教程,並使用列表,詞典和函數來試試並感受它們。祝你好運!

P.S.列表的附加方法將對您有所幫助。試圖找出如何使用它!