windows 闰年程序对特定输入做错事

3pvhb19x  于 2022-12-14  发布在  Windows
关注(0)|答案(2)|浏览(85)

所以昨天我从朋友那里得到了这个问题,关于一个程序,用python来检查一年是否是闰年,于是我决定帮忙。我把它写了下来,它似乎运行得很好,直到我输入1992作为输入,在这种情况下它返回false(不应该是这种情况)。所以我想知道我错在哪里了。
我的代码:

def is_leap(year):
   leap = False

   if (year % 4) == 0:
       if (year % 100) == 0:
           if (year % 400) == 0:
               leap = True
           else:
               leap = False
       else:
           leap = False
   else:
       leap = False

   return leap

year = int(input())
print(is_leap(year))

结果:1992 -〉错误

vjrehmav

vjrehmav1#

您的代码存在一些问题:首先,我会以部分相反的顺序进行检查,例如:
1.开始检查年份%400,
1.那么在第5行中就会出现一个逻辑错误:它必须
如果不是(年份% 100)== 0:
1.仅检查%4年
代码可以如下所示:

def is_leap(year):
    leap = False

    if (year % 400) == 0:
        leap = True
    elif ((year % 100) != 0 and (year % 4) == 0):
        leap = True
    else:
        leap = False
    return leap

year = int(input())
print(is_leap(year))
mkshixfv

mkshixfv2#

问题在于嵌套的if语句。Leapyear为year % 100 != 0 and year % 4 == 0year % 400 == 0
试试这个:

def is_leap(year):
    leap = False
    if year % 100 != 0 and year % 4 == 0 or year % 400 == 0:
        leap = True 

    return leap

year = int(input())
print(is_leap(year))

相关问题