实验报告

【实验目的】 

1.掌握如何创建并调用一个函数,以及如何进行参数传递和指定函数的返回值等。

2.掌握变量的作用域和匿名函数。

【实验条件】

1.PC机或者远程编程环境。

 

【实验内容】

1.完成第六章 字符串及正则表达式 实例01-06,实战一到实战四

2.编写程序实现功能:判断手机号码属于移动、电信或者联通

 

 

实例01:输出每日一帖(共享版)

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

 

代码如下:

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

 

 

 

 运行结果如下:

 

 

 

 

 

 

 

 

 

 

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

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

 

代码如下:

 1 def fun_bmi(person, height, weight):
 2     '''
 3     功能:根据身高和体重计算BMI指数
 4     person:姓名
 5     height:身高,单位:米
 6     weight:体重,单位:千克
 7     '''
 8     print(person + "的身高" + str(height) + "米 \t 体重:" + str(weight) + "千克")
 9     bmi = weight / (height * height)
10     print(person + "的BMI指数为:" + str(bmi))
11     #判断身材是否合理
12     if bmi < 18.5:
13         print("您的体重过轻 ~@_@\n")
14     if bmi >= 18.5 and bmi < 24.9:
15         print("正常范围,注意保持(-_-)\n")
16     if bmi >= 24.9 and bmi < 29.9:
17         print("肥胖 ^@_@^\n")
18 
19 #调用函数
20 fun_bmi("路人甲", 1.83, 60)
21 fun_bmi("路人乙", 1.60, 50)

 

 

 运行结果如下:

 

 

 

 

 

 

 

 

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

  在 IDLE中创建一个名称为 function_bmi_upgrade.py的文件,然后在该文件中定义一个名称为fun_bmi_upgrade的函数,该函数包括一个可变参数,用于指定包括姓名、身高和体重的测试人信息,在该函数中将根据测试人信息计算BMI指数,并输出结果,最后在函数体外定义一个列表,并且将该列表作为fun_bmi_upgrade()函数的参数调用,代码如下:

 

代码如下:

 1 def fun_bmi_upgrade(*person):
 2     '''
 3     功能:根据身高和体重计算BMI指数(共享升级版)
 4     *person:可变参数该参数中需要传递带3个元素的列表,
 5     分别为姓名、身高(单位:米)和体重(单位:千克)
 6     '''
 7     for list_person in person:
 8         for item in list_person:
 9             person = item[0]
10             height = item[1]
11             weight = item[2]
12             print("\n" + "="*13, person, "="*13)
13             print("身高:" + str(height) + "米 \t 体重:" + str(weight) + "千克")
14             bmi = weight / (height * height)
15             print("BMI指数:" + str(bmi))
16             #判断身材是否合理
17             if bmi < 18.5:
18                 print("您的体重过轻 ~@_@")
19             if bmi >= 18.5 and bmi < 24.9:
20                 print("正常范围,注意保持(-_-)")
21             if bmi >= 24.9 and bmi < 29.9:
22                 print("肥胖 ^@_@^")
23 
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)

 

 

 

 运行结果如下:

 

 

 

 

 

 

 

 

 

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

  在IDLE中创建一个名称为checkout.py的文件,然后在该文件中定义一个名称为 fun_checkout的函数,该函数包括一个列表类型的参数,用于保存输入的金额,在该函数中计算合计金额和相应的折扣,并将计算结果返回,最后在函数体外通过循环输入多个金额保存到列表中,并且将该列表作为fun_checkout()函数的参数调用。

 

代码如下:

 1 def fun_checkout(money):
 2     '''
 3     功能:计算商品合计金额并进行折扣处理
 4     money:保存商品金额的列表
 5     返回商品的合计金额和折扣后的金额
 6     '''
 7     money_old = sum(money)
 8     money_new = money_old
 9     if 500 <= money_old < 1000:     #满500可享受9折优惠
10         money_new = '{:.2f}'.format(money_old * 0.9)
11     elif 1000 <= money_old < 2000:  #满1000可享受8折优惠
12         money_new = '{:.2f}'.format(money_old * 0.8)
13     elif 2000 <= money_old < 3000:  #满2000可享受7折优惠
14         money_new = '{:.2f}'.format(money_old * 0.7)
15     elif money_old >= 3000:  # 满3000可享受6折优惠
16         money_new = '{:.2f}'.format(money_old * 0.6)
17     return money_old, money_new
18 
19 #调用函数
20 print("\n开始结算......\n")
21 list_money = []
22 while True:
23     inmoney = float(input("输入商品金额(输入0表示输入完毕):"))
24     if int(inmoney) == 0:
25         break
26     else:
27         list_money.append(inmoney)      #将金额添加到金额列表中
28 money = fun_checkout(list_money)        #调用函数
29 print("合计金额:", money[0], "应付金额:", money[1])

 

 

 运行结果如下:

 

 

 

 

实例05:一颗松树的梦

   在IDLE中创建一个名称为differenttree.py的文件,然后在该文件中定义一个全局变量pinetree,并为其赋初始值,再定义一个名称为fun_christmastree的函数,在该函数中定义名称为pinetree的局部变量,并输出,最后在函数体外调用fun christmastree()函数,并输出全局变量pinetree的值。

 
代码如下:

 1 pinetree = '我是一颗松树'     # 定义一个全局变量(松树)
 2 def fun_christmastree():
 3     '''
 4     功能:一个梦
 5         无返回值
 6     '''
 7     pinetree = '挂上彩灯、礼物……我变成一棵圣诞树@^.^@ \n'#定义局部变量
 8     print(pinetree)
 9 
10 # 函数体外
11 print('\n下雪了……\n')
12 print( '===============开始做梦……=============\n')
13 fun_christmastree()     # 调用函数
14 print ( '===============梦醒了……===============\n')
15 pinetree ='我身上落满雪花,' + pinetree + ' -_- '
16 print(pinetree)     #输出全局变量的值

 

 

 

 运行结果如下:

 

 

 

 

 

实例06:应用lambda实现对爬取到的秒杀商品信息进行排序

  在 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)
4 bookinfo.sort(key = lambda x:(x[1], x[1] / x[2]))
5                 # 对x[1]第二个字段升序排序,有重复的则再按x[1]/x[2]折扣比例降序排列
6 print('排序后的商品信息:\n', bookinfo)

 

 运行结果如下:

 

 

 

 

 

实战一:导演为剧本选主角

  模拟导演为剧本选主角,并输出确定参演剧本主角的名字,效果如图所示:

 

 

代码如下:

1 def Actor(actor):
2     print(actor + "开始参演这个剧本")
3 
4 #调用函数
5 person = input("导演选定的主角是:")
6 Actor(person)

 

 

 运行结果如下:

 

 

 

 

 

实战二:模拟美团外卖商家的套餐

  美团外卖的商家一般都会推出几款套餐。例如,某米线店套餐:考神套餐13元,单人套餐9.9元,情侣套餐20元。编程实现输出该米线店推出的套餐。效果如图所示。

 

 

代码如下:

1 def Package(package1, money1, package2, money2, package3, money3):
2     print('米线店套餐如下:1.'+ package1 + '2.' + package2 + '3.' +package3)
3     print(package1 + money1)
4     print(package2 + money2)
5     print(package3 + money3)
6 
7 #调用函数
8 Package('考神套餐', '13元', '单人套餐', '9.9元', '情侣套餐', '20元')

 

 

 运行结果如下:

 

 

 

 

 

 

 

 

实战三:根据生日判断星座

  根据生日可以判断出所属星座。例如:生日为7月1日,属于巨蟹座。编程实现根据输入的出生月份和日期判断所属星座。效果如图所示。

 

代码如下:

 1 # 星座
 2 list = ['摩羯座','水瓶座','双鱼座','白羊座','金牛座','双子座',
 3      '巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','摩羯座']
 4 # 1、白羊座:3月21日~4月19日    2、金牛座:4月20日~5月20日
 5 # 3、双子座:5月21日~6月21日    4、巨蟹座:6月22日~7月22日
 6 # 5、狮子座:7月23日~8月22日    6、处女座:8月23日~9月22日
 7 # 7、天秤座:9月23日~10月23日   8、天蝎座:10月24日~11月22日
 8 # 9、射手座:11月23日~12月21日  10、摩羯座:12月22日~1月19日
 9 # 11、水瓶座:1月20日~2月18日   12、双鱼座:2月19日~3月20日
10 # 日期
11 d = [20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22]
12 def starSign(month, day):
13     #如果日期小于月份减一就是前一个星座,否则就是本月所对应的星座
14     if day < d[month-1]:
15         return list[month-1]
16     else:
17         return list[month]
18 
19 #调用函数
20 month = int(input("请输入月份:"))
21 day = int(input("请输入日期:"))
22 print(str(month) + "" + str(day) + "日星座为:" + starSign(month, day))

 

 运行结果如下:

 

 

 

 

 

 

实战四:将美元转换为人民币

  实现将美元转换为人民币。美元与人民币之间的汇率经常变更,本实战按1美元等于6.28人民币计算。效果如图所示。

代码如下:

1 def change(dollar):
2     rmb = dollar * 6.28
3     return rmb
4 
5 #调用函数
6 dollar = float(input("请输入要转换的美元金额:"))
7 rmb = change(dollar)
8 print("转换后人民币金额是:" + str(rmb))

 

 

 运行结果如下:

 

 

 

 

 

 

编写程序实现功能:判断手机号码属于移动、电信或者联通

代码如下:

 1 #判断输入的手机号码是中国移动/连通/电信
 2 
 3 import re
 4 pattern1 = 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})$'
 5 #中国移动匹配手机号:134~139 150~152 157~159 172 178 182~184 187~188 195 197~198
 6 
 7 pattern2 = r'(13[3]\d{8})$|(14[9]\d{8})$|(15[3]\d{8})$|(17[37]\d{8})$|(18[019]\d{8})$|(19[013]\d{8})$'
 8 #中国电信匹配手机号:133 149 153 173 177 180 181 189 190 191 193 199
 9 
10 pattern3 = r'(13[012]\d{8})$|(14[56]\d{8})$|(15[56]\d{8})$|(16[6]\d{8})$|(17[56]\d{8})$|(18[56]\d{8})$|(19[6]\d{8})$'
11 #中国联通匹配手机号:130 131 132 145 146 155 156 166 175 176 185 186 196
12 
13 while True:
14     mobile1 = input("请输入您的手机号码:")
15     match1 = re.match(pattern1, mobile1)
16     match2 = re.match(pattern2, mobile1)
17     match3 = re.match(pattern3, mobile1)
18     if match1 != None:
19         print(mobile1, '是有效的中国移动手机号码。')
20         break
21     elif match2 != None:
22         print(mobile1, '是有效的中国电信手机号码。')
23         break
24     elif match3 != None:
25         print(mobile1, '是有效的中国联通手机号码。')
26         break
27     else:
28         print("你的电话可能属于虚拟运营商")
29         break

 

 

 运行结果如下:

 

 

 

 

原文地址:http://www.cnblogs.com/zengjunjie/p/16793447.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性