测试过去的年份是否大于或等于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 +"."
答案 0 :(得分:1)
首先,在Python中,0是假的,所有其他数字都是真的。所以,当你这样做时:
if year % 4:
...如果year % 4
除0
之外的任何内容,则会触发,这意味着年份不可被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年)。