Python第八章实验报告
一、实验题目
Python第八章实例和实战作业
二、实验目的和要求
1.熟悉Pycharm的运行环境
2.学习并掌握Python模块的运用
三、主要仪器设备
联想小新air15
硬件:AMD R7 5700U
软件:Windows11操作系统
四、实验内容
完成第八章实例01-04,8.6实战
利用Pycharm完成Python实验报告
实例01:创建计算BMI指数的模块
代码如下:
(1)创建一个用于根据身高、体重计算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)
9 print(person + "的BMI指数为:" + str(bmi)) #输出BMI指数
10 # 判断身材是否合理
11 if bmi < 18.5:
12 print("您的体重过轻 ~@_@~\n")
13 if bmi >= 18.5 and bmi <= 24.9:
14 print("正常范围,注意保持 (-_-)\n")
15 if bmi >= 24.9 and bmi < 29.9:
16 print("您的体重过重 ~@_@~\n")
17 if bmi >= 29.9:
18 print("肥胖 ^@_@^\n")
19 def fun_bmi_upgrade(*person):
20 '''功能:根据身高、体重计算BMI指数(升级版)
21 *person:可变参数该参数中需要传递带3个元素的列表,
22 分别为姓名、身高(单位:米)和体重(单位:千克)
23 '''
24 for list_person in person:
25 for item in list_person:
26 person = item[0] # 姓名
27 height = item[1] # 身高(单位:米)
28 weight = item[2] # 体重(单位:千克)
29 print("\n" + "=" * 13, person, "=" * 13)
30 print("身高:" + str(height) + "米 \t 体重:" + str(weight) + "千克")
31 bmi = weight / (height * height)
32 print("您的BMI指数为:" + str(bmi)) # 输出BMI指数
33 # 判断身材是否合理
34 if bmi < 18.5:
35 print("您的体重过轻 ~@_@~\n")
36 if bmi >= 18.5 and bmi <= 24.9:
37 print("正常范围,注意保持 (-_-)\n")
38 if bmi >= 24.9 and bmi < 29.9:
39 print("您的体重过重 ~@_@~\n")
40 if bmi >= 29.9:
41 print("肥胖 ^@_@^\n")
(2)创建一个名称为main.py的文件
1 import bmi #导入bmi模块 2 bmi.fun_bmi("尹一伊",1.75,120) #执行模块中的fun_bmi()函数
代码运算结果如下:

实例02:导入两个包括同名函数的模块
代码如下:
(1)创建矩形模块
1 def girth(width,height):
2 '''功能:计算周长
3 参数:width(宽度)、height(高度)
4 '''
5 return (width + height) * 2
6 def area(width,height):
7 '''功能:计算周长
8 参数:width(宽度)、height(高度)
9 '''
10 return width * height
11 if __name__ =='__main__':
12 print(area(10,20))
(2)创建圆形模块
1 import math #导入标准模块math
2 PI = math.pi #圆周率
3 def girth(r):
4 '''功能:计算周长
5 参数:r(半径)
6 '''
7 return round(2 * PI * r, 2) #计算周长并保留两位小数
8 def area(r):
9 '''功能:计算面积
10 参数:r(半径)
11 '''
12 return round(PI * r * r ,2) #计算面积并保留两位小数
13 if __name__ =='__main__':
14 print(girth(10))
(3)创建一个名称为compute.py的文件
1 import rectangle as r #导入矩形模块
2 import circular as c #导入圆形模块
3 if __name__ == '__main__':
4 print("圆形的周长为:",c.girth(10)) #调用计算圆形周长的函数
5 print("矩形的周长为:",r.girth(10,20)) #调用计算矩形周长的函数
代码运行结果如下:

实例03:在指定包中创建通用的设置和获取尺寸的模块
代码如下:
(1)在settings包中,创建一个名称为size的模块
1 _width = 800 #定义保护类型的全局变量(宽度)
2 _height = 600 #定义保护类型的全局变量(高度)
3 def change(w,h):
4 global _width #全局变量(宽度)
5 _width = w #重新给宽度赋值
6 global _height #全局变量(高度)
7 _height = h #重新给高度赋值
8 def getWidth(): #获取宽度的函数
9 global _width
10 return _width
11 def getHeight(): #获取高度的函数
12 global _height
13 return _height
(2)在settings包的上一层目录中创建一个名称为main.py的文件
1 from settings.size import * #导入size模块下的全部定义
2 if __name__ =='__main__':
3 change(1024,768) #调用change()函数改变尺寸
4 print('宽度:',getWidth()) #输出宽度
5 print('高度:',getHeight()) #输出高度
代码运行结果如下:

实例04:生成由数字、字母组成的4位验证码
代码如下:
1 #----------实例04:生成由数字、字母组成的4位验证码----------#
2 import random
3 if __name__ =='__main__':
4 checkcode = ''
5 for i in range(4):
6 index = random.randrange(0,4)
7 if index != i and index + 1 != i:
8 checkcode += chr(random.randint(97,122))
9 elif index + 1 == i:
10 checkcode += chr(random.randint(65,90))
11 else:
12 checkcode += str(random.randint(1,9))
13 print("验证码:",checkcode)
代码运行结果如下:
![]()
实战一:大乐透号码生成器
代码如下:
1 #-----------实战一:大乐透号码生成器----------#
2 from random import sample
3 def number():
4 front = sample([str(i) for i in range(1,36)],5)
5 back = sample([str(i) for i in range(1,13)],2)
6 space = [" "*6]
7 group = front + space + back
8 for i in group:
9 print(i.zfill(2),end=" ")
10 print("大乐透号码生成器")
11 while True:
12 amount = int(input("请输入要生成的大乐透号码注数:"))
13 for i in range(amount):
14 number()
15 print("")
16 print("")
17 break
代码运行结果如下:
![]()
实战二:春节集五福
代码如下:
1 #----------实战二:春节集五福----------#
2 import random
3 #抽五福的方法
4 def JiWuFu():
5 wufu = ['爱国福','富强福','和谐福','友善福','敬业福']
6 fuka = random.sample(wufu,1)
7 return fuka
8 #打印当前拥有的所有福
9 def wufu(fuka):
10 print("当前拥有的福:")
11 for i,j in fuka.items():
12 print(i,':',j,'\t',end = '')
13 #判断是否集齐五福
14 def wufu_ready(fuka):
15 flag = 1
16 for i,j in fuka.items():
17 if j==0:
18 flag = 0
19 return flag
20 print('开始集福啦~~~')
21 fuka = {'爱国福':0,'富强福':0,'和谐福':0,'友善福':0,'敬业福':0}
22 count = 0
23 while wufu_ready(fuka) == 0:
24 input("\n按下<enter>键获取福卡")
25 StrFu = JiWuFu()[0]
26 print('获取了:',StrFu)
27 fuka[StrFu] += 1
28 wufu(fuka)
29 wufu_ready(fuka)
30 count += 1
31 print("\n***五福已经集齐,真是有福之人***")
32 print("一共集福",count,'次')
代码运行结果如下:
![]()
实战三:封装用户的上网行为
代码如下:
1 #----------实战三:封装用户的上网行为----------#
2 def web(time):
3 print("浏览网页:" + str(time) + "小时;")
4 return time
5 def video(time):
6 print("看视频:" + str(time) + "小时;")
7 return time
8 def playgame(time):
9 print("玩网络游戏:" + str(time) + "小时;")
10 return time
11 def study(time):
12 print("上网学习:" + str(time) + "小时;")
13 return time
14 def total(time):
15 print('今天上网共计:' +str(time) + "小时;",end = ' ' )
16 if time >= 8:
17 print("请保护眼睛,合理安排上网时间!")
18 else:
19 print("比较合理,但也要注意休息!")
20 name ='小明'
21 print(name,"上网时间、行为统计:")
22 t1 = web(1.5)
23 t2 = video(2)
24 t3 = playgame(3)
25 t4 = study(2)
26 time =t1 + t2 + t3 + t4
27 total(time)
代码运行结果如下:
实战四:计算个人所得税
代码如下:
1 #----------实战四:计算个人所得税----------#
2 def tax(money):
3 low = 3500
4 baoxian = 7662
5 yanglao = money * 0.08
6 yiliao = money * 0.02
7 shiye = money * 0.005
8 gongjijin = money * 0.12
9 summoney = yanglao + yiliao +shiye +gongjijin
10 if summoney >= 7662:
11 summoney = 7662
12 lastmoney = money - summoney - low
13 if lastmoney <= 0:
14 taxes = 0
15 elif 0 < lastmoney < 1500:
16 taxes = lastmoney * 0.03
17 elif 1500 <= lastmoney <= 4500:
18 taxes = lastmoney * 0.1 - 105
19 elif 4500 <= lastmoney < 9000:
20 taxes = lastmoney * 0.2 - 555
21 elif 9000 <= lastmoney < 35000:
22 taxes = lastmoney * 0.25 - 1005
23 elif 35000 <= lastmoney < 55000:
24 taxes = lastmoney * 0.3 - 2002
25 elif 55000 <= lastmoney < 80000:
26 taxes = lastmoney * 0.35 - 5505
27 elif 80000 <= lastmoney:
28 taxes = lastmoney * 0.45 - 13505
29 return taxes
30
31 m = float(input("请输入月收入:"))
32 taxes = tax(m)
33 print('您应征个人所得税金额为:{:.2f}'.format(taxes))
代码运行结果如下:




浙公网安备 33010602011771号