Код функции високосного года в календаре Python не работает - PullRequest
0 голосов
/ 28 января 2019

Таким образом, в настоящее время я пытаюсь создать функцию, посредством которой при вводе определенного года и calendar.isleap (year) затем обрабатывает, является ли этот год високосным годом с True или False.

Моя проблема в том, что я не могу определить функцию, с помощью которой он решит, является ли введенный год Истинным из Ложного, а затем выведет этот год вместе со строкой.Пример, который я создал и попытался использовать, приведен ниже:

import calendar

def leap_year():
    year = calendar.isleap(year)
    if calendar.isleap == True:
        print(year + 'is a leap year')
    else:
        print(year + 'is not a leap year')

year = 2016

leap_year()

Любая помощь по этому вопросу будет принята с благодарностью.Спасибо

Ответы [ 4 ]

0 голосов
/ 28 января 2019

Есть несколько проблем с вашим кодом.Сначала ваша функция создает новую локальную переменную с именем 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)
0 голосов
/ 28 января 2019

Пара изменений, вам нужно передать год в функцию и указать в качестве переменной "год" в вашей функции, а затем при печати привести год к строке.

import calendar

def leap_year(year):
    if calendar.isleap(year) == True:
        print(str(year) + ' is a leap year')
    else:
        print(str(year) + ' is not a leap year')

leap_year(2016)
0 голосов
/ 28 января 2019

Код мог быть

def leap_year(check_year):
    if ((check_year%4==0)and not(check_year%100==0))or (check_year%400==0)  :
        print(str(year) + 'is a leap year')
    else:
        print(str(year) + 'is not a leap year')

year = 2016

leap_year(year)
0 голосов
/ 28 января 2019

Метод isleap() возвращает True, если год является високосным, в противном случае False.

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