2013-02-01 22 views
2

我對Python非常陌生,並且正在努力爲一個類創建一個程序。我們都應該降雪日常記錄了一個星期,一輪輸入到小數點後一位,這是我在下面做:應該如何接近初學者的編程任務?

def main(): 
    print "~*~*~*~*~*~ SNOWFALL LOG ~*~*~*~*~*~" 

    snowFall = float (raw_input("Enter Snowfall for Day 1: ")) 
    print "Snowfall for Day 1: ", ("%.1f" % snowFall) 
    snowFall = float (raw_input("Enter Snowfall for Day 2: ")) 
    print "Snowfall for Day 2: ", ("%.1f" % snowFall) 
    snowFall = float (raw_input("Enter Snowfall for Day 3: ")) 
    print "Snowfall for Day 3: ", ("%.1f" % snowFall) 
    snowFall = float (raw_input("Enter Snowfall for Day 4: ")) 
    print "Snowfall for Day 4: ", ("%.1f" % snowFall) 
    snowFall = float (raw_input("Enter Snowfall for Day 5: ")) 
    print "Snowfall for Day 5: ", ("%.1f" % snowFall) 
    snowFall = float (raw_input("Enter Snowfall for Day 6: ")) 
    print "Snowfall for Day 6: ", ("%.1f" % snowFall) 
    snowFall = float (raw_input("Enter Snowfall for Day 7: ")) 
    print "Snowfall for Day 7: ", ("%.1f" % snowFall) 

main() 

然而,在那之後我們應該計算總降雪量和使用for平均循環。我知道命令str(command)也以某種方式參與,但我不知道如何。

我該如何解決這個問題?

回答

2

我建議你做的是把值放入一個列表中,以存儲它們。所以在你的印刷之前把這個放在:

snowFallTotal = [] 

現在你可以把值放到這個列表中。每raw_input後把這個:

snowFallTotal.append(snowFall) 

這樣做是「追加」 snowFall到列表中。

現在獲得所有的值後,您可以使用for循環計算總和,然後除以7以獲得平均值。

totalSum = 0 # variable to store the sum 
for i in snowFallTotal: # iterate through the value list 
    totalSum += i # augmented addition; adds the value to the variable in place 
average = totalSum/7.0 # floating point division to get accurate average 

然後你就可以打印結果。

print 'Average Snowfall for the week:', ('%.1f' % average) 

作爲便箋,您不需要for循環。您可以用簡單的sum函數替換它。

totalSum = sum(snowFallTotal) 

這就賦予totalSum的元素的總和snowFallTotal,這也正是for環做得比。

+0

它保持平均和總計最近提交的積雪。所以第7天打印爲總數,並且它除以7是平均值。使用最新的值而不是編譯列表? – user2031682

+0

其實我找到了答案,我並沒有把它放在正確的地方。非常感謝你的幫助!我一直在這裏坐了幾個小時,重寫了這個程序,只需要一點幫助就可以突破。 – user2031682

+0

任何原因你不只是'sum()'列表中的所有值? –

-1

我可以寫一個這樣的函數,但我想你剛開始這樣做......所以也許這有助於。這不是DRY(編程的一個好規則是不要重複自己),但這種方式可能會幫助你更好地理解它!

total_snowfall=0.0 

snowFall = float (raw_input("Enter Snowfall for Day 1: ")) 
total_snowfall +=snowFall 
print "Snowfall for Day 1: ", ("%.1f" % snowFall) 

snowFall = float (raw_input("Enter Snowfall for Day 2: ")) 
total_snowfall +=snowFall 
print "Snowfall for Day 2: ", ("%.1f" % snowFall) 

snowFall = float (raw_input("Enter Snowfall for Day 3: ")) 
total_snowfall +=snowFall 
print "Snowfall for Day 3: ", ("%.1f" % snowFall) 

snowFall = float (raw_input("Enter Snowfall for Day 4: ")) 
total_snowfall +=snowFall 
print "Snowfall for Day 4: ", ("%.1f" % snowFall) 

snowFall = float (raw_input("Enter Snowfall for Day 5: ")) 
total_snowfall +=snowFall 
print "Snowfall for Day 5: ", ("%.1f" % snowFall) 

snowFall = float (raw_input("Enter Snowfall for Day 6: ")) 
total_snowfall +=snowFall 
print "Snowfall for Day 6: ", ("%.1f" % snowFall) 

snowFall = float (raw_input("Enter Snowfall for Day 7: ")) 
total_snowfall +=snowFall 
print "Snowfall for Day 7: ", ("%.1f" % snowFall) 

print "total snowfall is:" ,("%.1f" % total_snowfall) #you can do some calculations here 
0

我建議你仔細閱讀你的作業規範,並用它來記錄你的課堂筆記。如果沒有足夠的材料讓學生完成任務,那麼分配是很少見的。

Python有許多與在線相關的資源,包括官方文檔可以幫助您完成特定的功能,如str()

如果您可以直接訪問您的老師,請向他們提出很多問題。他們可以幫助您解決如何處理編程任務的任何基本問題。

2

你可以節省幾行代碼,如果你使用一個循環:

# An empty list to hold data 
snowfalls = [] 

# Loop through each daynumber, from 1 to 7 
for daynumber in range(1,8): 
    snowfall = float(raw_input("Enter Snowfall for Day {}: ".format(daynumber))) 
    snowfalls.append(snowfall) 
    print "Snowfall for Day {}: {:.1f}".format(daynumber, snowFall) 

# For debugging, print the whole list 
print snowfalls 

# Calculate total 
total_snowfall = sum(snowfalls) 
print "Total snowfall: {:.1f}".format(total_snowfall) 

# Calculate average (= total/7.0) 
# len() gets the length of the snowfall list 
average_snowfall = total_snowfall/len (snowfalls) 
print "Average snowfall: {:.1f}".format(average_snowfall) 

我用format(),這是新的方式做字符串格式化 - 這是非常漂亮的:)

+0

這實際上是一個非常聰明的方式來做到這一點! – user2031682

+0

@ user2031682謝謝,我很高興你喜歡它!這有點更靈活 - 要求30天的降雪數據,那麼你可以將'範圍(1,8)'更改爲'範圍(1,31)' –

+0

是的,循環+1。有一點需要注意的是,在Python 2中'range'在內存中創建一個列表,而'xrange'產生一個迭代器,所以用'xrange'可能會更好,尤其是對於更大的列表。 (即使它在這裏並不重要,習慣於習慣習慣總是一個好習慣!) – Volatility