一、实验目的
1、掌握自定义函数的方法;
2、掌握嵌套函数的使用方法;
3、学会区分全局变量和局部变量;
4、掌握返回值的用法;
5、掌握不同参数的使用方法。
二、实验内容
传入年月日参数,计算传入日期是该年的第多少天?
分析:
(1)判断年份、月份、天数是否符合要求。
(2)循环月份:1、3、5、7、8、10、12月31天;4、6、9、11月30天;2月闰年为29年,平年28天
(3)累加天数:输入月份如果大于1,则为:前几个月的天数 + 输入天数,否则就是输入的天数。
三、实验过程
1、自定义一个函数用于判断输入年份是闰年还是平年,正确返回True,错误返回False;
def runpingnian(year):
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
else:
return False
- 自定义一个函数判断传入的年月日是否符合规范,正确返回True,错误返回False;
def nianyueri(year, month, day):
if month < 1 or month > 12:
return False
if day < 1 or day > 31:
return False
if month in [4, 6, 9, 11] and day > 30:
return False
if month == 2:
if runpingnian(year) and day > 29:
return False
elif not runpingnian(year) and day > 28:
return False
return True
- 自定义一个函数计算传入的日期是这一年的第几天;
def dijitian(year, month, day):
days_of_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if runpingnian(year):
days_of_month[1] = 29
return sum(days_of_month[:month-1]) + day
- 输出结果:使用调用函数的方法,分别输入年、月、日;如果不符合规范(例如天数为35)则输出“日期有误!”;如正确则显示“xxxx年xx月xx日 是xxxx年的第多少天”
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
if nianyueri(year, month, day):
print(f"{year}年{month}月{day}日 是{year}年的第{dijitian(year, month, day)}天")
else:
print("日期有误!")
注:
- 新建一个文件,在代码编辑区域写程序;
2、“实验过程”中包含的三个函数需要都实现并用代码展示(如果有其他方法可以使用,但必须使用自定义函数的方法);
3、输出结果截图,结果包含输入日期正确和错误两种情况的截图;
正确情况:
错误情况
四、实训总结(至少300字)
在实验中,通过调用函数名并传递相应的参数,可以执行函数中的代码逻辑。嵌套函数是指在一个函数内部定义另一个函数,掌握了自定义函数的方法;掌握了嵌套函数的使用方法;嵌套函数可以访问外部函数的变量和参数,但外部函数无法直接访问嵌套函数的内部变量。嵌套函数常用于实现特定功能的辅助函数。学会了区分全局变量和局部变量区分全局变量和局部变量:全局变量是在函数之外声明的变量,它们在整个程序范围内都可以被访问和修改。而局部变量是在函数内部声明的变量,只能在函数内部使用,函数执行完毕后会被销毁。掌握了返回值的用法函数可以有返回值,通过return语句可以将函数的结果返回给调用者。返回值可以是任意类型的数据,包括基本类型、对象、列表等。通过返回值,可以实现函数之间的数据传递和结果共享。掌握了不同参数的使用方法:函数可以接受不同类型和数量的参数。常见的参数类型包括必选参数、可选参数、关键字参数和可变参数。必选参数是函数调用时必须提供的参数,可选参数是可以省略的参数,关键字参数是通过参数名指定参数值的方式,可变参数可以接受任意数量的参数。
通过这次实训掌握以上知识和技能,我可以更加灵活地编写和组织代码,提高编程的效率和可读性。同时,这些知识也有助于理解函数式编程的概念和应用。