Python函数:回复YES或NO-有些错误

时间:2014-09-29 21:18:56

标签: python function command

测试过去的年份是否大于或等于1582.

def gregyear():

    try:
        year =raw_input("Pick a year greater than or equal to 1582. It has to be divisible by four.)\n")
        year =float(year)
        leapyear = "Yes"
    except:
        print "please, only numbers"
    else:
        year =float(year)
        if  year >= 1582:
            if year % 4:
                print year
                leapyear= "Yes"
            else:
                leapyear= "No"
        else:
            print "Wrong... print a year greater than 1582"


    return leapyear

gregyear()
print "leapyear is  "+ leapyear +"."

1 个答案:

答案 0 :(得分:1)

首先,在Python中,0是假的,所有其他数字都是真的。所以,当你这样做时:

if year % 4:

...如果year % 40之外的任何内容,则会触发,这意味着年份可被4整除。所以你的逻辑是向后的。


其次,虽然gregyear确实返回一个值,但忽略该返回值如果要使用它,则必须存储它:

leapyear = gregyear()

第三,您无法向数字添加字符串,因此这将引发TypeError

print "leapyear is  "+ leapyear +"."

您可能想要的是将字符串和数字传递给print以在打印时神奇地连接在一起,如下所示:

print "leapyear is", leapyear, "."

请注意我删除了多余的空格,因为带逗号的print会自动在其参数之间放置空格。

但是,更好的方法是使用字符串格式化:

print "leapyear is {}.".format(leapyear)

作为旁注,你也错过了1700,1800和1900年不闰年的规则(1600和2000年)。