我正在尝试为我的 Zybooks python 课程编写一个程序,但我不知道如何让它工作。提示是这样的:
现代公历中的一年由 365 天组成。事实上,地球绕太阳旋转需要更长的时间。考虑到时间差异,每 4 年发生一次闰年。闰年是指一年有 366 天:多出一天,即 2 月 29 日。给定年份为闰年的要求是:
年份必须能被4整除
如果年份是世纪年(1700年、1800年等),则该年份必须能被400整除;因此,1700年和1800年都不是闰年
闰年的一些示例为 1600 年、1712 年和 2016 年。
编写一个程序,输入一年并确定该年是否为闰年。
我尝试了多种方法,但我不知道我能做什么。我想让可被 100 整除的数字遵循我的代码的第一部分,而其余不符合条件的数字遵循第二部分。我有什么办法可以做到这一点吗
首先我尝试做:
is_leap_year = False
input_year = int(input())
if input_year % 100 == 0 and input_year % 400 == 0 or input_year % 4 == 0:
print(input_year,'- leap year')
else:
print(input_year,'- not a leap year')
为了使 input_years 可以被 100 整除,而 input_years 可以被 400 整除,没有余数为闰年,或者如果这不起作用,那么 input_years 可以被 4 整除,没有余数算作闰年;然而,这将以 1900 年被算作闰年而结束,而实际上它不是闰年
(正确)输入 1954年 你的输出 1954 年 - 不是闰年
(正确)输入 2016年 你的输出 2016 年 - 闰年
(正确)输入 1600 你的输出 1600 年 - 闰年
(不正确)输出不同。 输入 1900年 你的输出 1900 年 - 闰年 预期产出 1900 年 - 不是闰年
然后我尝试了:
is_leap_year = False
input_year = int(input())
if input_year / 100 and input_year % 400 == 0:
print(input_year,'- leap year')
else:
print(input_year,'- not a leap year')
if input_year % 4 == 0:
print(input_year,'- leap year')
else:
print(input_year,'- not a leap year')
但是,这最终会让我得到如下所示的两个输出:
1900 - 不是闰年 1900 年 - 闰年
我还尝试用 and 切换 or ,但这会将 2016 年标记为非闰年,因为它不满足这两个标准。有什么办法可以让我可以这样写,让除以 100 的数字只运行代码的第一部分,而不尝试运行第二部分?
问题是,当你检查是否能被 4 整除时,你并没有强制它不是一个世纪年份。世纪年份单独检查。
使用此代码:
is_leap_year = False
input_year = int(input())
if input_year / 100 and input_year % 400 == 0:
print(input_year,'- leap year')
elif input_year % 4 == 0 and input_year % 100 !=0 :
print(input_year,'- leap year')
else:
print(input_year,'- not a leap year')