Вы должны сделать это так, как вы описали. MongoDB является нереляционной базой данных и не поддерживает объединения.
Мне нравится ваш лаконичный код оценки и возврата результата в одной строке кода! Однако в вашем коде есть две проблемы: 1) вместо проверки целого числа вы смотрите последние две цифры 2) Порядок логической оценки неверен. Попробуйте этот простой код
def is_leap(year):
y=int(year)
return y%400==0 or (y%100 != 0 and y%4==0)
year = input()
print(is_leap(year))
Я не совсем уверен, почему ваш код не работает, но у меня есть решение:
def is_leap(year):
if year%4 == 0:
if year%100 == 0:
if year%400 == 0:
return True #divisible by 4, divisible by 100, and divisible by 400
else:
return False #divisible by 4 and divisible by 100
else:
return True #divisible by 4 and not divisible by 100
else:
return False #not divisible by 4
И чтобы проверить его:
for i in range(1000, 2501, 4):
if not is_leap(i):
print(str(i)) # this will print all the "irregular" leap years between 1000 and 2500
Кроме того, я ' Я не уверен, где вы запускаете этот код, но вопрос спрашивает логические значения (True или False), и вы вместо этого возвращаете годы, поэтому может быть, поэтому вы получаете ошибку. [115 ]
Проблема в том, что вы проверяете только последние две цифры, как видно из y=int(x[-2:])
, что на самом деле нет причин для этого. Программные ограничения уже сообщают вам, что вводом будет int от 1900 до 10000, так что вы можете просто работать с годом. Кроме того, ваш оператор return будет оценивать or
перед and
(см. здесь ), поэтому последняя вещь, которую он проверяет, будет !=100
, таким образом, нарушая его для случая 400
. [ 116]