编写一个程序,使用字典为我提供一年中的某一天



我想写一个程序,用字典给我一年中的一天。

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

请帮我修复它。

sum函数,除了一个可迭代的(listtuple,...)参数。d是一个int.
您可以将所有日子汇总在一个循环中,例如

...
e = 0
for i in range(len(b)):
  c = b[i]
  d = Months[c]
  e = e + d
e = e + Day
print(e)
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)

最新更新