Что не так с решением задачи?
Написать функцию is_year_leap, принимающую 1 аргумент — год, и возвращающую True, если год високосный, и False иначе.
def is_year_leap(year):
year = int(input("Введите год: "))
if year % 4 != 0 or (year % 100 == 0 and year % 400 != 0):
return True
else:
return False
Ответы (2 шт):
Не так - строчка year = int(input("Введите год: ")). Не нужно спрашивать год, если он уже передаётся в функцию аргументом.
И условие неправильное, конечно же.
Неправильное условие. На самом деле - високосный год - это год, номер которого (кратен 4, но не кратен 100) или (кратен 400). (Расставил скобки для удобства понимания).
Так же можно избавить от else, который идёт после ветки, содержащей return. Например:
if cond:
return True
else
return False
можно упростить в:
if cond:
return True
return False
Однако и тут можно сделать проще. Заметьте, что возвращаемое значение всегда равно переменной cond. Тогда отрывок выше превратится в:
return cond
А ваш код преобразуется в:
def is_year_leap(year):
return year % 4 == 0 and year % 100 != 0 or year % 400 == 0
Наконец добавлю, что в вашем коде скобки в условии лишние. Согласно приоритету сначала вычисляется x and y а потом z or t