2017-04-20 87 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! –

相关问题