2017-04-20 7 views
0

私のコードに問題があり、最小値と最大値が値ではなく月として表示されています。一番下のminとmaxのコードはプレースホルダですが、この問題にどのように対処するのか分かりません。降水量の最小値または最大値の索引を検索

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

だからあなたのようなものを行うことができminまたはmax値のそれぞれのインデックスを取得するには、次の

index = rainfall.index(min(rainfall)) 

をそして、あなたは、インデックスが正しく林はあなたのrain_monthリストをアップすることを知っているために、あなたができます月を見つけるためにそのインデックスを使用します。

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

しかし、より良い方法は、あなたのrain_monthsとをリンクされるだろう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[-1]からrainfall[0]maxからminを得ることができます。 minおよびmaxにはソートされたリストは必要ありません。また、sortを実行すると、rainfallの順番が変更されますが、rain_monthの順番は変更されません。これは、正しい月を取得するために説明した最初の方法を使用できないことを意味します。

私の提案は、そのsortを削除するか、または2番目の方法を使用することです。

+0

注:最大または最小の拘束がある場合には注意が必要です。リストから最初のものが返されます。 – James

+0

はい、それは正しいですが、それは 'min'と' max'がどのように働くかです。 'index'を削除しても、この動作は変更されません。これは、2番目の例では' OrderedDict'を使用しています。 – Darkstarone

+1

これは私の問題を完全に解決しました!最初の方法では、ソート機能を削除する必要がありました。私はdict構造についてまだ学んでいないが、私はそれを調べるだろう。あなたの助けをありがとうDarkstarone! –

関連する問題