【问题标题】:Why does this sometimes print "Leap year" twice?为什么有时会打印两次“闰年”?
【发布时间】:2022-08-17 06:18:30
【问题描述】:

此代码用于我的闰年计算器/标识符分配。当我通过它时,我想知道为什么它会根据年份打印两次“闰年”。有时它会,有时它不取决于我使用的主机,例如。 Thonny,编码室,replit。

这是我的代码:

year = int(input(\"Which year do you want to check? \"))

if year%4==0:
    if year%100==0:
        if year%400==0:
            print(\"Leap year\")
        else:
            print(\"Not leap year\")
        print(\"Leap year\")
    else:
        print(\"Not leap year\")
else:
    print(\"Not leap year\")
  • 如果年份可以被 100 和 400 整除,则打印两次。你知道为什么吗?
  • 我们可以告诉您出了什么问题,但如果您自己调试,您将了解更多信息。您可以做的是首先找出导致双打印输出的示例年份;然后跟踪逻辑并确定代码出错的地方。
  • 它为哪个输入打印了两次Leap year

标签: python python-3.x leap-year


【解决方案1】:

如果在您的情况下除以 100 和 400,它将打印出它是闰年。

因为它将进入 year%100 然后进入 if year%400 并打印闰年。 然后它会转到 year%400 的 else 之后的下一条语句,并再次打印。 (**之间的部分)

if year%100==0:
        if year%400==0:
            **print("Leap year")**
        else:
            print("Not leap year")
        **print("Leap year")**

【讨论】:

    【解决方案2】:

    它打印“闰年”两次,因为您添加了不重要的第 8 行,您可以通过只编写一个 if 语句来检查它是否是闰年来简化代码,

    def isLeapYear(year):
        return year % 4 == 0 and year % 100 != 0 or year % 400 == 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多