【发布时间】:2023-03-29 08:04:01
【问题描述】:
这些是说明: 在公历中,使用三个条件来识别闰年:
年份可以被4整除,是闰年,除非: 年份可以除以 100,它不是闰年,除非: 年份也能被 400 整除。那么就是闰年。
所以我正在编写这段代码,它需要给出一个年份,如果年份是 4 和 400 的倍数,则它是闰年。如果是 100 的倍数,则不是:
def is_leap(year):
k = 400 % year
m = 4 % year
p = 100 % year
if m == 0:
if p == 0:
if k == 0:
leap = True
else:
leap = False
return leap
year = int(input())
print(is_leap(year))
这是错误信息: UnboundLocalError: 赋值前引用了局部变量'leap'
我不知道为什么不起作用,除了循环内部之外,其他地方都没有使用跳跃
【问题讨论】:
-
这里没有循环。还想一想:如果
m == 0或k == 0为假,leap会是什么? -
您正在从函数返回
leap。想想如果m = 1会发生什么 -
如果前两个
if语句中的任何一个为假,则永远不会分配leap。 -
另外,你的逻辑是错误的。 2024 年将是闰年,但这不是 100 或 400 的倍数,因此您的代码会给出错误的答案。
-
逻辑也是错误的,因为你在做
400 % year而不是year % 400,等等。
标签: python python-3.x