код работает, но не так, как задумано. Попытка распечатать дни каждого месяца на основе ввода - включить високосный год. Тип ошибки - PullRequest
0 голосов
/ 12 июля 2020

Я знаю, что этот вопрос задавался раньше, но мой код работал для February (02) input, а теперь нет. Я получаю Type Error: not all arguments converted during string formatting Мой код выполнялся без ошибок, но не печатал ни один день. Любая помощь приветствуется, поскольку я все еще учусь.

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

def calcDays():
    year = input('Please enter the year in XXXX format ')
    month = input('Please enter the month in XX format ')

    if month  == ('01', '03', '05', '07', '08', '10', '12'):
        print (31)

    elif month  == ('04', '06', '09', '11'):
        print (30)

    elif month == '02' and isLeapyear(year) == True:
        print (29)

    elif month == '02' and isLeapyear(year) == False:
        print (28)

calcDays()

Ответы [ 2 ]

0 голосов
/ 31 июля 2020

Некромантинг. Просто разместите это, если вы хотите правильно вычислить високосный год в python и не хотите использовать класс календаря, используйте:

def IsLeapYear(year):
    if (year % 400 == 0)
        return True

    if (year % 100 == 0)
        return False

    if (year % 4 == 0)
        return True

    return False

или более оптимизированный:

def GregorianIsLeapYear(y):
    if ((y % 4) != 0)
        return False
    if ((y % 100) != 0)
        return True
    return (y % 400) == 0
0 голосов
/ 12 июля 2020

Попробуйте это, вы должны изменить год на int, который является str, прежде чем переходить в режим, и я также изменил условие для високосного года

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


def calcDays():
    year = input('Please enter the year in XXXX format ')
    month = input('Please enter the month in XX format ')

    if month == '01' or month == '03' or month == '05' or month == '07' or month == '08' or month == '10' or month == '12':
        print(31)

    elif month == '04' or month == '06' or month == '09' or month == '11':
        print(30)

    elif month == '02' and isLeapyear(year) == True:
        print(29)

    elif month == '02' and isLeapyear(year) == False:
        print(28)


calcDays()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...