1

Python からインポートされたカレンダー/日時ライブラリを使用せずに、タイトルの内容を達成する方法を考え出そうとしています。その年がうるう年かどうかを確認するための関数が上部にほとんどありません。特定の 2 月の日数を印刷するときに参照できるようにしたいのですが、その方法がよくわかりません。(output.bla blaのようなもので推測しました)

これまでのところ、私がやりたいことを明確にする必要があるこのようなものを思いつきましたが、私はまだPythonに少し慣れていないので、タスクのコードを修正するためのいくつかのヒント/ヘルプが大好きです. .

# A function to determine if a year is a leap year.
# Do not change this function.
def is_leap_year (year):
    return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)

# You should complete the definition of this function:

 def days_in_month(month, year):

    if month == 'September' or month == 'April' or month == 'June' or month == 'November'
    print 30

    elseif month == 'January' or month == 'March' or month == 'May' or month== 'July' or month == 'August' or month == 'October'\
    or month== 'December'
     print 31

    elseif month == 'February' and output.is_leap_year = True
    print 29

    elseif month == 'February' and output.is_leap_year = False
    print 28

    else print 'Blank'

OK、コードを修正しました。2 月以外の毎月の正しいデータを出力しているようです。

# A function to determine if a year is a leap year.
# Do not change this function.
def is_leap_year (year):
    return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)

# You should complete the definition of this function:

def days_in_month(month, year):

    if month in ['September', 'April', 'June', 'November']:
        print 30

    elif month in ['January', 'March', 'May', 'July', 'August','October','December']:
        print 31        

    elif month == 'February' and is_leap_year == True:
        print 29

    elif month == 'February' and is_leap_year == False:
        print 28

2 月の出力を修正するためのヒントはありますか?

編集:最初の関数を参照するときに引数 year を追加する必要がありました。将来の参照用に 100% 動作するコードを次に示します。

# A function to determine if a year is a leap year.
# Do not change this function.
def is_leap_year(year):
    return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)

# You should complete the definition of this function:

def days_in_month(month, year):

    if month in ['September', 'April', 'June', 'November']:
        print 30

    elif month in ['January', 'March', 'May', 'July', 'August','October','December']:
        print 31        

    elif month == 'February' and is_leap_year(year) == True:
        print 29

    elif month == 'February' and is_leap_year(year) == False:
        print 28

    else:
        return None

</p>

</p>

</p>

4

5 に答える 5

3

より Pythonic なアプローチは、ディクショナリでマッピングを定義し、ディクショナリから値を取得することです。

やってみて:

days_in_month_dict = {"January": 31, "February": 28, 
                      "March": 31, "April": 30,
                      "May": 31, "June": 30, 
                      "July": 31, "August": 31,
                      "September": 30, "October": 31,
                      "November": 30, "December": 31}

def is_leap_year(year):
    return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)

def days_in_month(year, month):
    if is_leap_year(year) and month == "February":
        return 28

    try: 
        #attempt to get value from dictionary 
        return days_in_month_dict[month]
    except KeyError:
        #key does not exist, so we caught the error
        return None
于 2013-08-20T02:18:58.410 に答える
2

コードの構文エラー:

  1. の前にスペースを入れないでくださいdef days_in_month(month,year)。Python はインデントを使用してコード ブロックを区切ります。これは、コメントで指定したエラーです。
  2. pythonにはありませんelseif、そうあるべきですelif
  3. output.is_leap_year = True、それはする必要がありますis_leap_year(year) == TrueFalseパーツも変更する必要があります。
  4. if文の後に、のようなものelseがあるはずです:

    if month == 'September' or month == 'April' or month == 'June' or month == 'November':
        print 30
    elif month == 'January' or month == 'March' or month == 'May' or month== 'July' or month == 'August' or month == 'October' or month== 'December':
        print 31
    elif month == 'February' and is_leap_year(year) == True:
        print 29
    elif month == 'February' and is_leap_year(year) == False:
        print 28
    else:
        print 'Blank'
    
于 2013-08-20T01:55:35.890 に答える