繁体   English   中英

闰年while循环

[英]Leap year while-loop

我有问题。 基本上,代码不会让我在用户提交一年后添加一年以检查它是否是闰年。 如果是闰年,则循环停止,如果不是,我需要添加一年并给我闰年。 我该如何改进它?

year = int(input("Year:"))

while True:
    leapyear = year+1
    if leapyear%4 == 0 and leapyear%100 != 0 or leapyear%100 == 0 and leapyear%400 == 0:
        break

if True:
    print(f"The next leap year after {year} will be {leapyear}")

使用leapyear = year+1你不增加它,如果year=2013 ,循环将使得leapyear = 2013+1 = 2014每次,你需要增加leapyear

year = 2016
leapyear = year

while True:
    if leapyear % 4 == 0 and leapyear % 100 != 0 or leapyear % 100 == 0 and leapyear % 400 == 0:
        break
    leapyear += 1

print(f"The next leap year after {year} will be {leapyear}")

您可以在一个语句中缩短while + if/break

while not (leapyear % 4 == 0 and leapyear % 100 != 0 or leapyear % 100 == 0 and leapyear % 400 == 0):
    leapyear += 1

正如 azro 指出的那样, leapyear将永远等于year + 1 ,并且要使其增加,您可以做leapyear = leapyear + 1

同样在您提供的代码中,您正在检查用户输入的年份之后的年份是否是闰年。 如果您还打算检查当前年份,则应在增加闰年之前先执行 if 语句。

if True:

这将始终运行,因此您最好不要包含它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM