2017-04-20 88 views
0

我遇到問題,我的代碼顯示最小值和最大值,而不是數值。最小和最大底部的代碼是佔位符,但我不知道如何解決此問題。查找最小或最大降雨值的指數

def main(): 
#List of months 
rain_month = ['January', 'February', 'March',' April', \ 
       'May', 'June', 'July', 'August', \ 
       'September', 'October', 'November', 'December'] 
#Rainfall list 
rainfall = [] 

#Creates rainfall list for months 
index = 0 
while index < 12: 
    print ("Enter rainfall for ", rain_month [index], ": ",sep='', end = '') 
    amount = float(input()) 
    rainfall.append(amount) 
    index += 1 

print() 

#Total Rainfall 
total = 0 
for value in rainfall: 
    total += value 

print("Total Rainfall:", sep="", end="") 
print(format(total, ',.2f')) 

#Average Rainfall 
average = total/len(rainfall) 
print("Average Rainfall: ", sep="", end="") 
print(format(average, ',.2f')) 

#Sort 
rainfall.sort() 

print(min(rainfall)) 
print(max(rainfall)) 
main() 
+2

你的問題具體是什麼?這是含糊不清的。 – Carcigenicate

回答

1

因此,要獲得一個minmax值的相應指標,你可以這樣做:

index = rainfall.index(min(rainfall)) 

既然你知道該指數將正確林與您rain_month列表,你可以使用索引來查找月:

print(rain_month[rainfall.index(min(rainfall))]) 

然而,更好的辦法是鏈接您rain_monthsrainfall通過使用dict結構。因爲我們想的dict需訂購,我們或許應該使用OrderedDict

import collections 
# This is how OrderedDicts are initalized, you give them a list with (key,value) tuples for the order. 
rainfall = collections.OrderedDict(
[('January',0),('Feburary',0)] 
) 

# Do your computation, something like: 
for month in rainfall: 
    rainfall[month] = input("Rainfall: ") 

print(min(rainfall, key=rainfall.get)) 
print(max(rainfall, key=rainfall.get)) 

另外,如果你正在做rainfall.sort(),你可以從rainfall[0]minmaxrainfall[-1]minmax不需要排序列表。另外,如果你做sort你改變了rainfall的順序,而不改變rain_month的順序,這意味着你不能使用我描述的第一個方法來獲得正確的月份。

我的建議要麼是刪除sort,要麼使用第二種方法。

+0

注意:這在發生最大或最小捆綁時有一個警告。它將返回列表中的第一個。 – James

+0

是的,這是正確的,但這也是'min'和'max'的工作原理。刪除'index'不會改變這種行爲,正如第二個使用OrderedDict的例子所證明的那樣。 – Darkstarone

+1

這完全解決了我的問題!第一種方法確實要求我刪除排序功能。我還沒有學過字典結構,但我會研究它。感謝您的幫助Darkstarone! –

相關問題