Почему мы не можем подписать объект int в Python - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь вернуть дни месяца в соответствии с данным годом, в конце концов, если год не является високосным, он должен вернуть количество дней в соответствии с определенным списком, но я получаю ошибка.

Вот мой код

days_of_month=[0,31,28,31,30,31,30,31,31,30,31,30,31]
year=int(input('enter the year - '))
month=int(input('enter the month - '))

def isleap(year):
    return year%4==0 and (year % 100!=0 or year % 400==0)
def days(month,year):
    if month > 12 or month < 1:
        print('Invalid')     
    else:
        if month==2 and isleap(year):
            return 29
        else:
            return month[days_of_month]    

print(days(month,year))            

Сообщение об ошибке

Traceback (most recent call last):
  File "d:\Function_Example.py", line 16, in <module>
    print(days(month,year))
  File "d:\Function_Example.py", line 14, in days
    return month[days_of_month]
TypeError: 'int' object is not subscriptable

Есть ли другой способ получить элемент из списка?

1 Ответ

1 голос
/ 04 апреля 2020

вы перепутали последнюю строку функции.

должно быть:

days_of_month=[0,31,28,31,30,31,30,31,31,30,31,30,31]
year=int(input('enter the year - '))
month=int(input('enter the month - '))

def isleap(year):
    return year%4==0 and (year % 100!=0 or year % 400==0)
def days(month,year):
    if month > 12 or month < 1:
        print('Invalid')     
    else:
        if month==2 and isleap(year):
            return 29
        else:
            return days_of_month[month]    

print(days(month,year))  
...