-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関数を使用できます (この SO の質問で説明されているように):calendar

>>> 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 に答える