Python实验报告(第6章)
实验6:Python函数
一、实验目的和要求
1、学会创建并调用函数;
2、学会调用匿名函数;
3、掌握变量的作用域。
二、实验环境
软件版本:Python 3.10 64_bit
三、实验过程
1、实例1:输出每日一贴(共享版)
(1)在IDLE中创建一个名称为function_tips.py的文件,然后在该文件中创建一个名称为function_tips的函数,在该函数中,从励志文字列表中获取一条励志文字并输出,最后再调用函数function_tips(),代码如下:
1 def function_tips():
2 """功能:每天输出一条励志文字
3 """
4 import datetime # 导入日期时间类
5 # 定义一个列表
6 mot = ["今天星期一:\n坚持下去不是我很坚强,而是因为我别无选择。",
7 "今天星期二:\n含泪播种的人一定能笑着收获。",
8 "今天星期三:\n做对的事情比把事情做对重要。",
9 "今天星期四:\n命运给予我们的不是失望之酒,而是机会之杯。",
10 "今天星期五:\n不要等到明天,明天太遥远,今天就行动。",
11 "今天星期六:\n求知若饥,虚心若愚。",
12 "今天星期日:\n成功将属于那些从不说“不可能”的人。"]
13 day = datetime.datetime.now().weekday() # 获取当前日期
14 print(mot[day]) # 输出每日一贴
15 # *******************************调用函数**************************** #
16 function_tips()
(2)运行结果如图所示:

2、实例2:根据身高、体重计算BMI指数(共享版)
(1)在IDLE中创建一个名称为function_bmi.py的文件,然后在该文件中定义一个名称为fun_bmi的函数,该函数包括3个参数,分别用于指定姓名、身高和体重,再根据公式:BMI=体重/(身高x身高)计算BMI指数,并输出结果,最后在函数外调用两次fun_bmi函数,代码如下:
1 def fun_bmi(person,height,weight):
2 """功能:根据身高和体重计算BMI指数
3 person:姓名
4 height:身高,单位:米
5 weight:体重,单位:千克
6 """
7 print(person + "的身高:" + str(height) + "米\t体重:" + str(weight) + "千克")
8 bmi = weight/(height*height) # 用于计算BMI指数,公式为:BMI=体重、身高的平方
9 print(person + "的BMI指数为:" + str(bmi)) # 输出BMI指数
10 # 判断身材是否合理
11 if bmi < 18.5:
12 print("您的体重过轻")
13 if bmi >= 18.5 and bmi < 24.9:
14 print("正常范围,注意保持")
15 if bmi >= 24.9 and bmi < 29.9:
16 print("您的体重过重")
17 if bmi >= 29.9:
18 print("肥胖")
19 # ***********************************调用函数************************************** #
20 fun_bmi("路人甲",1.83,60) # 计算路人甲的BMI质数
21 fun_bmi("路人乙",1.60,50) # 计算路人乙的BMI指数
(2)运行结果如图所示:

3、实例3:根据身高、体重计算BMI指数(共享升级版)
(1)在IDLE中创建一个名称为function_bmi_upgrade.py的文件,然后在该文件中定义一个名称为fun_bmi_upgrade的函数,该函数包括一个可变参数,用于指定包括姓名、身高和体重的测试人信息,在该函数中将根据测试人信息计算BMI指数,并输出结果,最后在函数体外定义一个列表,并且将该列表作为fun_bmi_upgrade()函数的参数调用,代码如下:
1 def fun_bmi_upgrade(*person):
2 """功能:根据身高和体重计算BMI指数(共享升级版)
3 *person:可变参数,该参数中需要传递带3个元素的列表,
4 分别为姓名、身高(单位:米)和体重(单位:千克)
5 """
6 for list_person in person:
7 for item in list_person:
8 person = item[0] # 姓名
9 height = item[1] # 身高(单位:米)
10 weight = item[2] # 体重(单位:千克)
11 print("\n" + "="*13,person,"="*13)
12 print(person + "的身高:" + str(height) + "米\t体重:" + str(weight) + "千克")
13 bmi = weight/(height*height) # 用于计算BMI指数,公式为:BMI=体重、身高的平方
14 print(person + "的BMI指数为:" + str(bmi)) # 输出BMI指数
15 # 判断身材是否合理
16 if bmi < 18.5:
17 print("您的体重过轻")
18 if bmi >= 18.5 and bmi < 24.9:
19 print("正常范围,注意保持")
20 if bmi >= 24.9 and bmi < 29.9:
21 print("您的体重过重")
22 if bmi >= 29.9:
23 print("肥胖")
24 # *********************************调用函数************************************** #
25 list_w = [("绮梦",1.70,65),("零语",1.78,50),("黛兰",1.72,66)]
26 list_m = [("梓轩",1.80,75),("冷伊一",1.75,70)]
27 fun_bmi_upgrade(list_w,list_m) # 调用函数指定可变参数
(2)运行结果:

4、实例4:模拟结账功能——计算实付金额
(1)在IDLE中创建一个名称为checkout.py的文件,然后在该文件中定义一个名称为fun_checkout的函数,该函数包括一个列表类型的参数,用于保存输入的金额,在该函数中计算合计金额和相应的折扣,并将计算结果返回,最后在函数体外通过循环输入多个金额保存到列表中,并且将该列表作为fun_checkout()函数的参数调用,代码如下:
1 def fun_checkout(money):
2 """功能:计算商品合计金额并进行折扣处理
3 money:保存商品金额的列表
4 返回商品的合计金额和折扣后的金额
5 """
6 money_old = sum(money) # 计算合计金额
7 money_new = money_old
8 if 500 <= money_old < 1000: # 满500可享受9折优惠
9 money_new = "{:.2f}".format(money_old*0.9)
10 elif 1000 <= money_old <= 2000: # 满1000可享受8折优惠
11 money_new = "{:.2f}".format(money_old*0.8)
12 elif 2000 <= money_old < 3000: # 满2000可享受7折优惠
13 money_new = "{:.2f}".format(money_old*0.7)
14 elif money_old >= 3000: # 满3000可享受6折优惠
15 money_new = "{:.2f}".format(money_old*0.6)
16 return money_old,money_new # 返回总金额和折扣后的金额
17 # ******************************调用函数***************************** #
18 print("\n开始结算……\n")
19 list_money = [] # 定义保存商品金额的列表
20 while True:
21 # 请不要输入非法的金额,否则将抛出异常
22 inmoney = float(input("输入商品金额(输入0表示输入完毕):"))
23 if int(inmoney) == 0:
24 break # 退出循环
25 else:
26 list_money.append(inmoney) # 将金额添加到金额列表中
27 money = fun_checkout(list_money) # 调用函数
28 print("合计金额:",money[0],"应付金额",money[1]) # 显示应付金额
(2)运行结果如图所示:

5、实例5:使一颗松树的梦
(1)在IDLE中创建一个名称为differenttree.py的文件,然后在该文件中定义一个全局变量pinetree,并为其赋初始值,再定义一个名称为fun_christmastree的函数,在该函数中定义名称为pinetree的局部变量,并输出,最后在函数体外调用fun_christmastree()函数,并输出全局变量pinetree的值,代码如下:
1 pinetree = "我是一棵松树" # 定义一个全局变量(松树)
2 def fun_christmastree(): # 定义函数
3 """功能:一个梦
4 无返回值
5 """
6 pinetree = "挂上彩灯、礼物……我变成一颗圣诞树\n" # 定义局部变量
7 print(pinetree) # 输出局部变量的值
8 # ********************************函数体外******************************** #
9 print("\n下雪了……\n")
10 print("=============== 开始做梦…… ==============\n")
11 fun_christmastree() # 调用函数
12 print("================ 梦醒了…… ===============\n")
13 pinetree = "我身上落满雪花," + pinetree # 为全局变量赋值
14 print(pinetree) # 输出全局变量的值
(2)运行结果如图所示:

6、实例6:应用lambda实现对爬取到的秒杀商品信息进行排序
(1)在IDLE中创建一个名称为seckillsort.py的文件,然后在该文件中定义一个保存商品信息的列表,并输出,接下来再使用列表对象的sort()方法对列表进行排序,并且在调用sort()方法时,通过lambda表达式指定排序规则,最后输出排序后的列表,代码如下:
1 bookinfo = [("不一样的卡梅拉(全套)",22.50,120),("零基础学Android",65.10,89.80),("摆渡人",23.40,36.00),("福尔摩斯探案全集8册",22.50,128)]
2 print("爬取到的商品信息:\n",bookinfo,"\n")
3 bookinfo.sort(key = lambda x:(x[1],x[1]//x[2])) # 按指定规则进行排序
4 print("排序后的商品信息:\n",bookinfo)
(2)运行结果如图所示:

7、判断手机号码属于移动、电信或者联通
(1)代码如下:
1 import re
2 mobile = input("请输入手机号码:")
3 pattern_yd = r"(13[4-9]\d{8})$|(14[78]\d{8})$|(15[012789]\d{8})$|(17[28]\d{8})$|(18[23478]\d{8})$|(19[578]\d{8})$"
4 pattern_dx = r"(133\d{8})$|(149\d{8})$|(153\d{8})$|(17[37]\d{8})$|(18[019]\d{8})$|(19[0139]\d{8})$"
5 pattern_lt = r"(13[012]\d{8})$|(14[56]\d{8})$|(15[56]\d{8})$|(166\d{8})$|(17[56]\d{8})$|(18[56]\d{8})$|(196\d{8})$"
6 yd = re.match(pattern_yd,mobile)
7 dx = re.match(pattern_dx,mobile)
8 lt = re.match(pattern_lt,mobile)
9 if yd != None:
10 print("该电话号码:" + mobile + "是移动手机号码")
11 elif dx != None:
12 print("该电话号码:" + mobile + "是电信手机号码")
13 elif lt != None:
14 print("该电话号码:" + mobile + "是l联通手机号码")
15 else:
16 print("该电话号码:" + mobile + "未分配")
(2)运行结果如图所示:
![]()
8、实战一:导演为剧本选主角
(1)模拟导演为剧本选主角,并输出确定参演剧本主角的名字。代码如下:
1 def fun_xuanjue(): # 定义函数
2 print(name + "开始参演这个剧本") # 输出确定参演剧本主角的名字
3 name = input("导演选定的主角是:") # 导演为剧本选主角
4 fun_xuanjue() # 调用函数
(2)运行结果如图所示:

9、实战二:模拟美团外卖商家的套餐
(1)美团外卖的商家一般都会推出几款套餐。例如,某米线套餐:考神套餐13元,单人套餐9.9元,情侣套餐20元。编程实现输出改米线店推出的套餐。代码如下:
1 def fun_set(taocan): # 定义函数
2 print("米线店套餐如下:",end = "")
3 for index,name in enumerate(taocan):
4 print(str(index+1) + "." + name[0],end = " ")
5 print("\n")
6 for item in taocan:
7 print(item[0] + item[1])
8 taocan = [("考神套餐","13元"),("单人套餐","9.9元"),("情侣套餐","20元")] # 定义套餐列表
9 fun_set(taocan) # 调用函数
(2)运算结果如图所示:

10、实战三:根据生日判断星座
(1)根据生日可以判断出所属星座。例如:生日为7月1日,属于巨蟹座。编程实现根据输入的出生月份和日期判断所属星座。代码如下:
1 def fun_xingzuo(month, day):
2 xz = ('摩羯座', '水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座') # 创建星座列表
3 xzd = (20, 19, 20, 20, 21, 21, 23, 23, 23, 23, 22, 22) # 每个月的星座分界线日期
4 if day > xzd[month - 1]: # 判断输入的月份和日期属于什么星座
5 return xz[month]
6 else:
7 return xz[month - 1]
8 month = int(input("请输入月份(例如:5):")) # 输入月份
9 day = int(input("请输入日期(例如:17):")) # 输入日期
10 xingzuo = fun_xingzuo(month, day)
11 print(str(month) + "月" + str(day) + "日星座为:", xingzuo)
(2)运行结果如图所示:

11、实战四:将美元转换为人民币
(1)实现将美元转换为人民币。美元与人民币之间的汇率经常变更,本实战按1美元等于6.28人民币计算。代码如下:
1 def fun_dollor_RMB(dollor): # 定义函数
2 RMB1 = 6.28 * dollor # 将美元转换为人民币
3 RMB2 = "{:.2f}".format(RMB1) # 保留两位小数
4 return RMB2
5 dollor = int(input("请输入要转换的美元金额:"))
6 RMB = str(fun_dollor_RMB(dollor)) # 调用函数并将返回值变为字符后赋给变量RMB
7 print("转换后人民币金额是:" + RMB)
(2)运行结果如图所示:
![]()

浙公网安备 33010602011771号