根据以下条件更正我的Python闰年代码

2024-10-16 17:26:58 发布

您现在位置: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))

Tags: orand代码falsetrue替代品returnif
2条回答

代码的问题是,您正在检查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)
def is_leap(year):
    x = year % 4
    y = year % 100
    z = year % 400
    if(x == 0):
        if((y != 0) or ((y == 0) and (z == 0))):
            return True
        else:
            return False
    else:
        return False

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

相关问题 更多 >