-1

我正在尝试编写一个函数,该函数将字符串(一个月)作为输入并返回该月的天数,使用如下列表:

我把更正放在最下面,谢谢你的帮助

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 
4

4 回答 4

2

这似乎可能是一项家庭作业,但如果不是,您可以使用模块monthrange中的功能calendar(如本 SO 问题中所述):

>>> 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

您可能希望动态定义年份,因为这决定了它是否是闰年,但否则这似乎提供了您想要的数据。

于 2012-04-04T20:10:23.917 回答
1

不要发明自行车。只需使用日历模块http://docs.python.org/library/calendar.html

于 2012-04-04T20:09:47.163 回答
0

仅供参考,通常解决此类问题的最简单方法(给定字符串打印一个常量)是使用字典:

month2days = { 'January': 31, 'February': 29, } ## and so on

print (month2days['January'])

将打印 31

使用元组列表不是最好的方法。

于 2012-04-04T21:02:36.693 回答
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]。

于 2012-04-04T19:57:42.383 回答