这是我的代码:
def cal(month):
if month in ['January', 'march','may','july','august','oct','dec']:
print ("this month has 31 days")
elif month in ['april','june','sept','nov']:
print ("this month has 30 days")
elif month == 'feb' and leap(year)== True:
print ("this month has 29 days")
elif month == 'feb' and leap(year) == False:
print ("this month has 28 days")
else:
print ("invalid input")
def leap(year):
if (year % 4== 0) or (year % 400 == 0):
print ("its a leap year!")
else:
print ("is not a leap year")
year = int(input('type a year: '))
print ('you typed in :' , year)
month = str(input('type a month: '))
print ('you typed in :', month)
cal(month)
leap(year)
我收到的输出:
type a year: 2013
you typed in : 2013
type a month: feb
you typed in : feb
is not a leap year
is not a leap year
invalid input
is not a leap year
如果是28天或29天,为什么我没有得到feb天数的输出?
为什么我得到了无效的输入部分,即使它是另一个?
答案 0 :(得分:1)
您不应该尝试使用自己的功能来替换基础功能。 Python有管理日期的模块。你应该使用它。
https://docs.python.org/2/library/calendar.html#calendar.monthrange
>>> import calendar
>>> calendar.monthrange(2002,1)
(1, 31)
闰年,仍然在doc:
https://docs.python.org/2/library/calendar.html#calendar.isleap
关于你的代码,你的函数leap
应该返回一个布尔值,因为你在条件语句中使用它,否则leap(whatever) == true
将总是返回false。
答案 1 :(得分:1)
您只需在跳跃(年)功能中返回True或False即可正常工作。
这是维基百科的闰年算法。
def leap(year):
if year % 400 == 0:
return True
if year % 100 == 0:
return False
if year % 4 == 0:
return True
else:
return False