python - 根据以下条件更正我的 Python 闰年代码
问题描述
- 年份可以被4整除,是闰年,除非:
- 年份可以除以 100,它不是闰年,除非:
- 年份也能被 400 整除。那么就是闰年。
请更正我的代码。我不是在寻找替代品。请使用上述条件
def is_leap(year):
nonleap = False
leap = True
x = year % 4
y = year % 100
z = year % 400
if(x == 0):
if((y % 2 != 0) or ((y % 2 == 0) and (z % 2 == 0))):
return leap
else:
return nonleap
year = int(input())
print(is_leap(year))
解决方案
您的代码的问题是您正在检查 y 和 z 是否可以被 2 整除。
使用您的代码作为基础的解决方案可能如下所示
def is_leap(year):
nonleap = False
leap = True
x = year % 4
y = year % 100
z = year % 400
if x == 0:
if (y == 0) and not (z == 0):
return nonleap
else:
return leap
else:
return nonleap
但这里有一个更优雅的 Pythonic 解决方案 https://www.hackerrank.com/challenges/write-a-function/forum
def is_leap(year):
return year % 4 == 0 and (year % 400 == 0 or year % 100 != 0)
推荐阅读
- c++ - 无法归档所有数据
- javascript - 如何获取 Vuetify v-img 的 naturalSize?
- delphi - E2010 不兼容的类型:“HWND”和“TWindowHandle”
- wordpress - 如何修复文件超出 php.ini 中的 upload_max_size 指令
- python - 我需要 python 中的指数/非线性模型
- python-3.x - Amazon SageMake:- 无法为形状 (33600, 784) 和数据类型 float64 的数组分配 201.MiB
- file-io - 在 fortran 中拥有一个包含已打开文件的单位或名称的数组
- meteor - ReferenceError:初始化前无法访问“ShareJS”
- c - 在c中计算wav文件的FFT
- c - 如何在汇编代码中使用函数C的参数向右旋转