Есть несколько проблем с вашим кодом.Сначала ваша функция создает новую локальную переменную с именем year
, которая скрывает глобальную переменную.Из-за того, как работает поиск по имени, вы не можете передать глобальную переменную year
в calendar.isleap
и присвоить результат локальной переменной.Используйте другое имя для локальной переменной.Во-вторых, вы хотите увидеть, если результат из calendar.isleap
равен True
, а не сама функция.Используйте вашу новую локальную переменную в выражении.
def leap_year():
result = calendar.isleap(year)
if result == True:
print(str(year) + 'is a leap year')
else:
print(str(year) + 'is not a leap year')
В целях стиля не сравнивайте логическую переменную с логической константой;просто тестируем переменную напрямую:
if result:
print(year + 'is a leap year')
Это означает, что вам даже не нужна локальная переменная;просто используйте вызов функции непосредственно в операторе if
:
def leap_year():
if calendar.isleap(year):
print(year + 'is a leap year')
else:
print(year + 'is not a leap year')
Наконец, использование глобальной переменной здесь - плохой стиль.Вместо этого передайте год для проверки в качестве аргумента leap_year
.
def leap_year(y):
if calendar.isleap(y):
print(str(y) + 'is a leap year')
else:
print(str(y) + 'is not a leap year')
year = 2016
leap_year(year) # Or simply leap_year(2016)