Функция для отображения количества високосных лет в списке лет - PullRequest
0 голосов
/ 22 марта 2019

Я не ищу ответ, но я ищу указатель в правильном направлении, чтобы понять это сам.

У меня проблема, когда у меня есть функция, чтобы ВОЗВРАТИТЬ количество високосных летв СПИСОК восьми лет.Я не уверен, как подойти к этому.Я пытался использовать FOR LOOP, а также пытался использовать методы calendar.isleap и calendar.leapdays, но мне, кажется, что-то не хватает, потому что я все еще получаю ошибки.

--- код следует --

def countLeapYears(yearList):

(код студента здесь.)

print(countLeapYears([2001, 2018, 2020, 2090, 2233, 2176, 2200, 2982]))
print(countLeapYears([2001, 2018, 2020, 2092, 2204, 2176, 2200, 2982]))

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

То, что я пробовал, было так:

ly = 0
for i in yearList:
    if i % 4 == 0:
        ly += 1

Спасибо.

Ответы [ 3 ]

1 голос
/ 22 марта 2019

Учитывая, что ваш ввод является списком, а не диапазоном между 2 значениями, вы в настоящее время пытаетесь вызвать неправильную функцию.

Я предлагаю написать собственную функцию, которая принимает список в качестве входного аргумента и использует оператор по модулю в своем алгоритме: https://python -reference.readthedocs.io / en / latest / docs / operator / modulus.html

1 голос
/ 23 марта 2019

ОК ... спасибо за несколько входов, которые я получил.С некоторой помощью, подталкивая меня в правильном направлении, вот что у меня есть.Это работает, и ответы - то, что я должен был.

import calendar

def countLeapYears(yearList):

    j=0
    for i in listYears:
        if calendar.isleap(int(i)):
            j += 1
    return j

ожидаемый результат: 2

print (countLeapYears ([2001, 2018, 2020, 2090, 2233, 2176, 2200, 2982]))

ожидаемый результат: 4

print (countLeapYears ([2001, 2018, 2020, 2092, 2204, 2176, 2200, 2982])))

0 голосов
/ 22 марта 2019

Если вы просто ищете указатель в правильном направлении, это исходный код функции, которую вы пытаетесь вызвать.Строка документа может быть полезна: D

def leapdays(y1, y2):
    """Return number of leap years in range [y1, y2).
       Assume y1 <= y2."""
    y1 -= 1
    y2 -= 1
    return (y2//4 - y1//4) - (y2//100 - y1//100) + (y2//400 - y1//400)
...