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)运行结果如图所示:

 

 

 

posted @ 2022-10-15 12:02  夏空下  阅读(1139)  评论(0)    收藏  举报