2017-03-08 126 views
-1

我有問我每週實驗室的一個問題:Python的嵌套循環麻煩

編寫使用嵌套的循環來收集數據,計算 平均溫度在數月的計劃。該方案應該首先要求月份的數量爲 。外循環將每月循環一次 。內部循環將重複執行四次,每月一次,每次執行一次 。內循環的每次迭代將詢問用戶 該周的平均溫度。在所有迭代之後, 程序應該顯示每個月的平均溫度,以及整個時間段(所有月份)的平均溫度。

這是我想出了迄今爲止代碼:

def avgTemp(): 
    '''This function takes the input of number of months and takes 4 weekly temp averages 
     for each month then prints out the whole average 

     num_of_month --- integer 
     week_temp --- integer 
     total_avg --- return''' 


    num_of_month = int(input("Number of Months?: ")) #Asks how many months 

    total_avg = 0 

    monthly_avg = 0 

    for number in range(0,num_of_month): 

     for week in range(0,4): 

      week_temp = int(input("Avg week temp?: ")) 

      monthly_avg += week_temp 

     monthly_avg = monthly_avg/4 

     total_avg += monthly_avg 

    total_avg = total_avg/num_of_month 

    print (total_avg) 
    print (monthly_avg) 

我似乎無法工作如何獲得它,以顯示每個月的月平均值。理想情況下,我會使用一個列表,只是附加條目,但因爲這是一個介紹類,我們還沒有被「教」列表,因此不能使用它們。因此,使用我上面提到的工具,你有什麼建議來獲得我想要的輸出?

+1

您是否瀏覽過您的教科書,與您的教練說過,與同學討論過,並在Google上做過一些研究? – TigerhawkT3

+1

一個理想的Stackoverflow問題包括一個MCVE(參見[mcve])。特別是,請編輯您的帖子以包含一些示例輸入,您期望的輸出以及您實際獲得的輸出。您也可以從閱讀[如何調試小程序]中獲益(https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 – KernelPanic

回答

1

print (monthly_avg)放在你的外部循環(月循環)中。

當前,您只能打印最後的monthly_avg。此外,您需要在每月迭代時重置monthly_avg的值。

+0

這確實不會使OP的代碼實際上按照他們的意圖工作,但我承認這是一個好的開始,並且「顯示每個月的月平均值」而不是一次。不過他們會注意到它們並不是很好的平均值! – KernelPanic

0

根據您的規格,您必須在打印每個月的平均值之前詢問所有的值。因此您需要存儲每個月的值。

它在概念上更容易存儲總計(因此修改後的變量名稱)。在打印平均值之前只需執行分部。

# Asks how many months 
num_of_months = int(input("Number of Months?: ")) 
num_of_weeks = 4 

# ask and store for weekly values 
month_totals = [ 0 ] * num_of_weeks 
total = 0 
for month in range(num_of_months): 
    for week in range(num_of_weeks): 
    week_avg = int(input("Avg week temp?: ")) 
    month_totals[month] += week_avg 
    total += week_avg 

# print averages for each month 
for month in range(num_of_months): 
    month_avg = float(month_totals[month])/float(num_of_weeks) 
    print (month_avg) 

# print average for the entire period 
total_avg = float(total)/float(num_of_months * num_of_weeks) 
print (total_avg)