2017-10-15 17 views
0

辞書を使用してDay of the Yearを提供するプログラムを作成したいと思います。辞書を使用してDay of the Yearを提供するプログラムを作成してください。

import sys 
Month = str(sys.argv[1]) 
Day = int(sys.argv[2]) 

m = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] 
Months = {"Jan": 31, "Feb": 28, "Mar": 31, "Apr": 30, "May": 31, "Jun": 30, "Jul": 31, "Aug": 31, "Sep": 30, "Oct": 31, "Nov": 30, "Dec": 31} 
a = m.index(Month) 
b = m[0:a] 
for i in range(len(b)): 
c = b[i] 
d = Months[c] 
e = sum(d) + Day 
print(e) 

私はそれを実行すると、それは私を与える:

File "dayoftheyear.py", line 12, in <module> 
e = sum(d) + Day 
TypeError: 'int' object is not iterable 

してください、私はそれを修正するのに役立ちます。

+1

'sum'はintではなく、リストを期待しています。 – Maroun

答えて

0

sum引数は、反復可能(listtuple、...)の引数を除きます。 dintです。
あなたが

... 
e = 0 
for i in range(len(b)): 
    c = b[i] 
    d = Months[c] 
    e = e + d 
e = e + Day 
print(e) 
0

sum()のようなループ内のすべての日を合計可能性は、このような数字のリストとして反復可能なオブジェクト上で動作するように設計されています。例えばsum([1, 5, 7])。あなたの状況にはあまり適していません。

次の情報が役立ちます。指数を見つける代わりに、正しい月に達したときに停止することができます:

import sys 

user_month = str(sys.argv[1]).title() 
user_day = int(sys.argv[2]) 

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] 
days_in_month = {"Jan": 31, "Feb": 28, "Mar": 31, "Apr": 30, "May": 31, "Jun": 30, "Jul": 31, "Aug": 31, "Sep": 30, "Oct": 31, "Nov": 30, "Dec": 31} 
total = 0 

for month in months: 
    if user_month == month: 
     break 

    total += days_in_month[month] 

total += user_day 
print(total) 
関連する問題