实验6:函数

一、实验目的和要求

1、掌握函数的创建和调用;

2、了解不同的参数如何进行传递

3、了解返回值的应用

4、学习变量的作用域;

5、学习匿名函数(lambda)。

 

二、实验环境

软件版本:Python 3.10 64_bit

 

三、实验过程

1、实例01:输出每日一贴(共享版)

(1)在IDLE中创建一个名称为function_tips.py的文件,然后在该文件中创建一个名称为function_tips的函数,在该函数中,从励志文字列表中获取一条励志文字并输出,最后再调用函数function_tips代码如下:

 1 def function_tips():                            #定义函数
 2     '''功能:每天输出一条励志文字               
 3     '''
 4     import datetime                             #引用datetime模块
 5     mot = ["今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无选择",
 6            "今天星期二:\n含泪播种的人一定能笑着收获",
 7            "今天星期三:\n做对的事情比把事情做对重要",
 8            "今天星期四:\n命运给予我们的不是失望之酒,而是机会之杯",
 9            "今天星期五:\n不要等到明天,明天太遥远,今天就能行动",
10            "今天星期六:\n求知若饥,虚心若愚",
11            "今天星期日:\n成功将属于那些从不说“不可能”的人"]
12     day = datetime.datetime.now().weekday()
13     print(mot[day])
14 function_tips()                                 #调用函数

 

(2)运行结果如下:

 

2、实例02:根据身高、体重计算BMI指数(共享版)

(1)在IDLE中创建一个名称为function_bmi.py的文件,然后在该文件中定义一个名称为fun_bmi的函数,该函数包括3个参数,分别用于指定姓名、身高和体重,再根据公式BMI=体重/(身高*身高)计算BMI指数,并输出结果,最后在函数体外调用两次fun_bmi函数,代码如下:

 1 def fun_bmi(height,weight,person = "路人"):     #参数1:height,参数2:weight,已赋值参数:person
 2     '''功能:根据身高和体重计算BMI指数
 3         person:姓名
 4         height:身高,单位:米
 5         weight:体重,单位:千克
 6     '''
 7     print(person + "的身高:" + str(height) + "米\t体重:" + str(weight) + "千克")
 8     bmi = weight/(height*height)                
 9     print(person + "的BMI指数为:"+str(bmi))
10     if bmi<18.5:
11         print("您的体重过轻~@_@~\n")
12     if bmi >=18.5 and bmi<24.9:
13         print("正常范围,注意保持(-_-)\n")
14     if bmi >=24.9 and bmi<29.9:
15         print("您的体重过重~@_@~\n")
16     if bmi>=29.9:
17         print("肥胖^@_@^\n")
18 fun_bmi(1.73,60)

 

(2)运行结果如下:

 

 

 

3、实例03:根据身高、体重计算BMI指数(共享升级版)

(1)在IDLE中创建一个名称为function_bmi_upgrade.py的文件,然后在该文件中定义一个名称为function_bmi_upgrade的函数,该函数包括一个可变参数,用于指定包括姓名、身高和体重的测试人信息,在该函数中将根据测试人信息计算BMI指数,并输出结果,最后在函数体外定义一个列表,并且将该列表作为function_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("身高:"+str(height)+"米\t体重:"+str(weight)+"千克")
13             bmi = weight/(height*height)
14             print("BMI指数:"+str(bmi))
15             if bmi<18.5:
16                 print("您的体重过轻~@_@~\n")
17             if bmi >=18.5 and bmi<24.9:
18                 print("正常范围,注意保持(-_-)\n")
19             if bmi >=24.9 and bmi<29.9:
20                 print("您的体重过重~@_@~\n")
21             if bmi>=29.9:
22                 print("肥胖^@_@^\n")
23 #**********************************************调用函数****************************#
24 list_w = [('绮梦',1.70,65),('零语',1.78,50),('黛兰',1.72,66)]
25 list_m = [('梓轩',1.80,75),('冷伊一',1.75,70)]
26 fun_bmi_upgrade(list_w,list_m)

 

(2)运行结果如下:

 

4、实例04:模拟结账功能—计算实付金额

(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:
 9         money_new = '{:.2f}'.format(money_old * 0.9)
10     elif 1000 <= money_old <= 2000:
11         money_new = '{:.2f}'.format(money_old * 0.8)
12     elif 2000 <= money_old <= 3000:
13         money_new = '{:.2f}'.format(money_old * 0.7)
14     elif money_old >= 3000:
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、实例05:一棵松树的梦

(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、实例06:应用lambda实现对爬取到的秒杀商品信息进行排序

(1)在IDLE中创建一个名称为seckillsort.py的文件,然后在该文件中定义一个保存商品信息的列表,并输出,接下来再使用列表对象的sort()方法对列表进行排序,并且在调用sort()方法是,通过lambda表达式指定排序规则,最后输出排序后的列表,代码如下:

1 bookinfo = [('不一样的卡梅拉(全套)',22.50,120),('零基础学Android',65.10,89.80),
2             ('摆渡人',23.40,36.00),('福尔摩斯探案全集8册',22.50,128)]           #定义列表[(),()]
3 print('爬取到的商品信息:\n',bookinfo,'\n')
4 bookinfo.sort(key=lambda x:(x[1],x[1]/x[2]))                                    #升序排序(关键字:lambda 参数:返回值)
5 print('排序后的商品信息:\n',bookinfo)

 

(2)运行结果如下:

 

7、实战01:导演为剧本选主角

(1)在IDLE中创建一个名称为mainchar.py的文件,模拟导演为剧本选主角,并输出确定剧本主角的名字,代码如下:

1 def zhujue(a):
2     '''功能:连接字符串
3     '''
4     print(a+ "开始参演这个剧本")
5 a = input("导演选定的主角是:")
6 zhujue(a)

 

(2)运行结果如下:

 

8、实战02:模拟美团外卖商家的套餐

(1)在IDLE中创建一个名称为menu.py的文件,模拟实现输出该米线店推出的套餐,代码如下:

1 def taocan(str1,str2,str3):
2     print("米线店套餐如下:1." +str1+ " 2."+str2+" 3."+str3)
3     a = '13元'
4     b = '9.9元'
5     c = '20元'
6     print(str1+a)
7     print(str2+b)
8     print(str3+c)
9 taocan('考神套餐','单人套餐','情侣套餐')

 

(2)运行结果如下:

9、实战03:根据生日判断星座

(1)在IDLE中创建一个名称为weathereport.py的文件,然后在该文件中应用字符串的format()方法格式化输出实时天气预报,代码如下:

 1 def panduan(month,day):
 2     if (month == 3 and 21<=day<=31)|(month == 4 and 1<=day<=19):
 3         print(str(month)+""+str(day)+"日星座为:"+"白羊座")
 4     elif (month == 4 and 20<=day<=30)|(month == 5 and 1<=day<=20):
 5         print(str(month)+""+str(day)+"日星座为:"+"金牛座")
 6     elif (month == 5 and 21<=day<=31)|(month == 6 and 1<=day<=21):
 7         print(str(month)+""+str(day)+"日星座为:"+"双子座")
 8     elif (month == 6 and 22<=day<=30)|(month == 7 and 1<=day<=22):
 9         print(str(month)+""+str(day)+"日星座为:"+"巨蟹座")
10     elif (month == 7 and 23<=day<=31)|(month == 8 and 1<=day<=22):
11         print(str(month)+""+str(day)+"日星座为:"+"狮子座")
12     elif (month == 8 and 23<=day<=31)|(month == 9 and 1<=day<=22):
13         print(str(month)+""+str(day)+"日星座为:"+"处女座")
14     elif (month == 9 and 23<=day<=30)|(month == 10 and 1<=day<=23):
15         print(str(month)+""+str(day)+"日星座为:"+"天秤座")
16     elif (month == 10 and 24<=day<=31)|(month == 11 and 1<=day<=22):
17         print(str(month)+""+str(day)+"日星座为:"+"天蝎座")
18     elif (month == 11 and 23<=day<=30)|(month == 12 and 1<=day<=21):
19         print(str(month)+""+str(day)+"日星座为:"+"射手座")
20     elif (month == 12 and 22<=day<=31)|(month == 1 and 1<=day<=19):
21         print(str(month)+""+str(day)+"日星座为:"+"摩羯座")
22     elif (month == 1 and 20<=day<=31)|(month == 2 and 1<=day<=18):
23         print(str(month)+""+str(day)+"日星座为:"+"水瓶座")
24     elif (month == 2 and 19<=day<=30)|(month == 3 and 1<=day<=20):
25         print(str(month)+""+str(day)+"日星座为:"+"双鱼座")
26 month = int(input("请输入月份(例如:5):"))
27 day = int(input("请输入日期(例如:17):"))
28 panduan(month,day)

 

(2)运行结果如下:

 

 

10、实战04:将美元转换为人民币

(1)在IDLE中创建一个名称为change.py的文件,模拟美元和人民币转换,本实战以1美元转换6.28人民币计算,代码如下:

1 def zhuanhuan():
2     '''功能:美元金额转换为人民币
3     '''
4     dollar= input("请输入要转换的美元金额:")
5     rmb = float(6.28*int(dollar))
6     print("转换后的人民币金额是:",rmb)
7 zhuanhuan()

 

 

 

(2)运行结果如下:

 

 

 

posted on 2022-10-23 19:13  Mandeluda  阅读(332)  评论(0编辑  收藏  举报