我认为我的本地变量没有更新

时间:2014-12-15 00:07:40

标签: python python-3.x

我正在编写一个函数,如果参数是闰年,则返回True,如果不是,则返回False,但由于某种原因它返回True无论什么整数值被传递。由于它返回的局部变量初始化为True,我怀疑问题可能是它没有被更新,即使满足必要的条件:

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


for ayear in [1944,2011,1986,1800,1900,2000,2056]:
    print(is_leap(ayear)) #this returns True for every item?????

任何帮助?

2 个答案:

答案 0 :(得分:1)

哎呀,我想我弄明白了 - 我在考虑奇数和偶数,但这只适用于n%2 == 0。我刚把条件改为

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

现在工作正常。

答案 1 :(得分:1)

我知道在php中解决它,你的条件错了!!!

$arr = array(1944, 2011, 2012, 2013, 2014, 1986, 1800, 1900, 2000, 2056);

    function leapYear($year){
        if(($year % 4) == 0 && ($year % 100) != 0){
            return true;
        }
        else{
            return false;
        }
    }

    for($i = 0; $i < count($arr) ; $i++){
        $r = leapYear($arr[$i]);

        if($r){
            echo 'Lepo year: ' . $arr[$i] . '<br>';
        }else{
            echo 'Not Leap year: ' . $arr[$i] . '<br>';
        }

    }