Python if True *除非*

时间:2016-09-03 17:42:21

标签: python if-statement

我试图找出一种方法,如果输入可以被4整除,则返回true,但不是100,除非也是400.我没有成功尝试过:

def is_leap(year):
    leap = False

    if [year % 100 == 0 if not year % 400]:
        leap = False
    else:
        if leap % 4 == 0:
            leap = True
    return leap

2100的输入可以被4和100整除但不是400,所以我希望它返回False。

我已经得出一个简单的结论

def is_leap(year):
    leap = False

    if year % 4 == 0 and year % 400 == 0:
        leap = True
    elif year % 4 == 0 and year % 100 != 0:
        leap = True
    return leap

但除非是否有一种更容易或不同的做法?谢谢。

另外,虽然我主要倾向于使用python3.5来实现每个人所做的事情,但我喜欢2.7的简单性。任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:5)

我只想指出calendar.isleap是如何做到的:

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

答案 1 :(得分:-2)

我个人会这样写:

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

我认为这不会变得更简单:)

答案 2 :(得分:-2)

if year % 4 == 0:
    if year % 100 == 0 and year % 400 == 0:
        # True
# False

它的要点是处理你的基本条件,它必须能被4整除,然后用一些条件处理其他条件。 第二个if语句确保它可以被100和400

整除