[英]Printing the number of days in a given month and year [Python]
I've been trying to work out a way to accomplish what's in the title, without using any imported calendar/datetime libs from Python.我一直在尝试找出一种方法来完成标题中的内容,而不使用任何从 Python 导入的日历/日期时间库。 There's little function at the top for checking whether or not the year is a leap year, which I want to be able to reference when printing the number of days in a given February, however I'm not too sure how to do so.顶部几乎没有用于检查年份是否为闰年的功能,我希望在打印给定二月的天数时能够参考,但我不太确定如何这样做。 (I've guessed with something like output. bla bla) (我猜想有类似输出的东西。bla bla)
So far I've come up with something like this, which should make clear what I want to do, but I'm still a bit new to Python, so I would love a few tips/help on fixing up my code for the task.到目前为止,我已经想出了类似的东西,这应该可以明确我想要做什么,但我对 Python 还是有点陌生,所以我希望有一些提示/帮助来修复我的代码以完成任务.
# A function to determine if a year is a leap year.
# Do not change this function.
def is_leap_year (year):
return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)
# You should complete the definition of this function:
def days_in_month(month, year):
if month == 'September' or month == 'April' or month == 'June' or month == 'November'
print 30
elseif month == 'January' or month == 'March' or month == 'May' or month== 'July' or month == 'August' or month == 'October'\
or month== 'December'
print 31
elseif month == 'February' and output.is_leap_year = True
print 29
elseif month == 'February' and output.is_leap_year = False
print 28
else print 'Blank'
Ok I've fixed up my code, and it seems to output the correct data for every month but February:好的,我已经修复了我的代码,它似乎每个月都输出正确的数据,但 2 月:
# A function to determine if a year is a leap year.
# Do not change this function.
def is_leap_year (year):
return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)
# You should complete the definition of this function:
def days_in_month(month, year):
if month in ['September', 'April', 'June', 'November']:
print 30
elif month in ['January', 'March', 'May', 'July', 'August','October','December']:
print 31
elif month == 'February' and is_leap_year == True:
print 29
elif month == 'February' and is_leap_year == False:
print 28
Any hints to fix up outputting for February?有什么提示可以修复二月份的输出吗?
EDIT: Just needed to add the argument year when referencing the first function.编辑:只需要在引用第一个函数时添加参数 year 。 Here is the 100% working code for future reference:以下是 100% 工作代码供将来参考:
# A function to determine if a year is a leap year.
# Do not change this function.
def is_leap_year(year):
return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)
# You should complete the definition of this function:
def days_in_month(month, year):
if month in ['September', 'April', 'June', 'November']:
print 30
elif month in ['January', 'March', 'May', 'July', 'August','October','December']:
print 31
elif month == 'February' and is_leap_year(year) == True:
print 29
elif month == 'February' and is_leap_year(year) == False:
print 28
else:
return None
A more pythonic approach would be to define the mapping in a dictionary, then simply retrieve the values from the dictionary.更 Pythonic 的方法是在字典中定义映射,然后简单地从字典中检索值。
Try it out:试试看:
days_in_month_dict = {"January": 31, "February": 28,
"March": 31, "April": 30,
"May": 31, "June": 30,
"July": 31, "August": 31,
"September": 30, "October": 31,
"November": 30, "December": 31}
def is_leap_year(year):
return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)
def days_in_month(year, month):
if is_leap_year(year) and month == "February":
return 28
try:
#attempt to get value from dictionary
return days_in_month_dict[month]
except KeyError:
#key does not exist, so we caught the error
return None
Some syntax error in your code:您的代码中有一些语法错误:
def days_in_month(month,year)
. def days_in_month(month,year)
之前不应有空格。 Python use indentation to separate code blocks. Python 使用缩进来分隔代码块。 This is the error you given in comment.这是您在评论中给出的错误。elseif
in python, it should be elif
python中没有elseif
,应该是elif
output.is_leap_year = True
, it should be is_leap_year(year) == True
. output.is_leap_year = True
,应该是is_leap_year(year) == True
。 The False
part should be changed too. False
部分也应该更改。 after if
statement and else
there should be a :
, like在if
语句和else
之后应该有一个:
,比如
if month == 'September' or month == 'April' or month == 'June' or month == 'November': print 30 elif month == 'January' or month == 'March' or month == 'May' or month== 'July' or month == 'August' or month == 'October' or month== 'December': print 31 elif month == 'February' and is_leap_year(year) == True: print 29 elif month == 'February' and is_leap_year(year) == False: print 28 else: print 'Blank'
"""
Takes the year and month as input and returns the no. of days
"""
def is_leap_year (year):
return (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)
def days_in_month(month, year):
if month == 'September' or month == 'April' or month == 'June' or month == 'November':
result=30
elif month == 'January' or month == 'March' or month == 'May' or month== 'July' or month == 'August' or month == 'October'or month== 'December':
result=31
elif month == 'February' and output.is_leap_year ==True:
result=29
elif month == 'February' and output.is_leap_year == False:
result=28
return result
print(is_leap_year(2016))
print(days_in_month('September',2016))
month = int (input ('month (1-12): '))
if month < 13:
if month == 2:
year = int (input ('year: '))
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
print ('29')
else:
print ('28')
else:
print ('29')
else:
print ('28')
elif month >= 8:
if month % 2 == 0:
print ('31')
else:
print ('30')
elif month % 2 == 0:
print ('30')
else:
print ('31')
else:
print ('Only 1-12 accepted')
month=input("month")
year=int(input("year"))
if year%4==0:
year=('leap year')
if month in ['September', 'April', 'June', 'November']:
print ("30")
elif month in ['January', 'March', 'May', 'July', 'August','October','December']:
print ("31")
elif month == 'February' and year == "leap year":
print ("29")
elif month == 'February' and year != "leap year":
print ("28")
else:
print("none")
*# Write a function that determines how many days there are in a particular month. *# 编写一个函数来确定特定月份有多少天。
def year():
a = int(input("insert your year"))
def month():
z = int(input("enter month 1-12 "))
if z==9 or z==4 or z ==6 or z==11:
return print(30)
elif z==1 or z==3 or z==5 or z==7 or z==10 or z==12:
return print(31)
elif z ==2 and a % 4==0:
return print("29 its a leap year")
elif z ==2 and a % 4==1:
return print(28)
month()
year()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.