我正在尝试编写一个函数,它将一个字符串(一个月)作为输入,并使用如下所示的列表返回该月的天数:
我在底部进行了修正,谢谢你的帮助
month_days= [('January',[31]),('February',[28,29]),('March',[31]), ('April',[30]),('May',[31]),('June',[30]),('July',[31]),('August',[31]),('September',[30]),('October',[31]),
('November',[30]),('December',[31]) ]
def month_day(mnth):
for m, d in month_days:
if m == mnth:
return d
答案 0 :(得分:2)
这似乎可能是家庭作业,但如果不是,您可以使用monthrange
模块中的calendar
函数(如this SO question中所述):
>>> months = ['January','February','March','April','May','June', 'July','August','September','October','November','December']
>>> from calendar import monthrange
>>> for i in range(len(months)):
... ind = i+1
... print months[i], monthrange(2012,ind)[1] # returns a tuple, second element is number of days
...
January 31
February 29
March 31
April 30
May 31
June 30
July 31
August 31
September 30
October 31
November 30
December 31
您可能想要动态定义年份,因为这决定了它是否是闰年,但是否则这似乎会提供您想要的数据。
答案 1 :(得分:1)
不要发明自行车。只需使用日历模块http://docs.python.org/library/calendar.html
即可答案 2 :(得分:0)
这是遍历列表的基本方法,找到正确的月份并返回天数。这不是一个完整或最佳的解决方案,只是一个例子,因此您可以在其上进行构建。
month_days_list = [('January',[31]),('February',[28,29]),('March',[31]), ... ]
def month_days(month):
for m, d in month_days_list:
if m == month:
return d[0]
您应该对具有多个日期选项的月份执行某些操作,而不是仅返回d [0]。
答案 3 :(得分:0)
通常情况下,解决此类问题的最简单方法(给定字符串打印常量)是使用字典:
month2days = { 'January': 31, 'February': 29, } ## and so on
print (month2days['January'])
将打印31
使用元组列表不是最好的方法。