实验11:模块
一、实验目的和要求
1、学会自定义模块;
2、学会引用其他模块;
3、学会创建和使用包。
二、实验环境
软件版本:Python 3.10 64_bit
三、实验过程
1、实例1:创建计算BMI指数的模块
创建一个用于根据身高、体重计算BMI指数的模块,命名为bmi.py,其中bmi为模块名,.py为扩展名。关键代码如下:
1 def fun_bmi(person,height,weight): 2 '''功能:根据身高和体重计算BMI指数 3 person:姓名 4 height:身高,单位:米 5 weight:体重,单位:千克 6 ''' 7 8 print(person + "的身高:" + str(height) + "米\t体重:" + str(weight) + "千克") 9 bmi=weight/(height*height) # 用于计算BMI指数,公式为:BMI=体重/身高的平方 10 print(person + "的BMI指数为:"+str(bmi)) # 输出BMI指数 11 # 此处省略了显示判断结果的代码 12 def fun_bmi_upgrade(*person): 13 '''功能:根据身高和体重计算BMI指数(升级版) 14 *person:可变参数该参数中需要传递带3个元素的列表, 15 分别为姓名、身高(单位:米)和体重(单位:千克) 16 ''' 17 18 # 此处省略了函数主体代码
2、实例2:导入两个包括同名函数的模块
创建两个模块,一个是矩形模块,其中包括计算矩形周长和面积的函数;另一个是圆形,其中包括计算圆形周长和面积的函数。然后在另一个Python文件中导入这两个模块,并调用相应的函数计算周长的面积。具体步骤如下:
(1)创建矩形模块,对应的文件名为rectangle.py,在该文件中定义两个函数,一个用于计算矩形的周长,另一个用于计算矩形的面积,具体代码如下:
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)创建圆形模块,对应的文件名称为circular.py,在该文件中定义两个函数,一个用于计算圆形的周长,另一个用于计算圆形的面积,具体代码如下:
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 的Python文件,首先导入矩形模块的全部定义,然后导入圆形模型的全部定义,最后分别调用计算矩形周长的函数和计算圆形周长的函数,代码如下:
1 from rectangle import * # 导入矩形模块 2 from circular import * # 导入圆形模块 3 if __name__ == '__main__': 4 print('圆形的周长为:',girth(10)) # 调用计算圆形周长的函数 5 print('矩形的周长为:',girth(10,20)) # 调用计算矩形周长的函数
执行compute.py文件,结果如下:
从图中可以看出执行步骤(3)的第5行代码时出现异常,这是因为原本想执行的矩形模块的girth() 函数被圆形模块的girth() 函数给盖住了。解决该问题的方法是,不使用from...import 语句导入,而是使用import 语句导入。修改后的代码如下:
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)) # 调用计算矩形周长的函数
执行上面代码后,结果如下:
3、实例3:在指定包中创建通过的设置和获取尺寸的模块
创建一个名称为settings 的包,在该包下创建一个名称为size的模块,通过该模块实现设置和获取尺寸的通用功能。具体步骤如下:
(1)在settings包中,创建一个名称为size的模块,在该模块中,定义两个保护类型的的全局变量,分别代表宽度和高度,然后定义一个change()函数,用于修改两个全局变量的值,在定义两个函数,分别用于获取宽度和高度,具体代码如下:
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的文件,在该文件中导入settings包下的size模块的全部定义,并且调用change()函数重新设置宽度和高度,然后在分别调用getWidth()和getHeight()函数获取修改后的宽度和高度,具体代码如下:
from settings.size import * # 导入size模块下的全部定义 if __name__=='__main__': change(1024,768) # 调用change()函数改变尺寸 print('宽度:',getWidth()) # 输出宽度 print('高度:',getHeight()) # 输出高度
(3)运行结果如图所示:
4、实例4:生成有数字、字母组成的4 位验证码
(1)在IDLE 中创建一个名称为checkcode.py 的文件,然后在该文件中导入Python 标准模块中random 模块(用于生成随机数),然后定义一个保存验证码的变量,在应用for 语句实现一个重复4 次的循环,在该循环中,调用random 模块提供的randrange() 和randint() 方法生成符合要求的验证码,最后输出生成的验证码,代码如下:
import random # 导入标准模块中的random if __name__=='__main__': checkcode = "" # 保存验证码的变量 for i in range(4): # 循环4次 index = random.randrange(0,4) # 生成0~3中的一个数 if index != i and index + 1 != i: checkcode += chr(random.randint(97,122)) # 生成a~z中的一个小写字母 elif index + 1 == i: checkcode += chr(random.randint(65,90)) # 生成A~Z中的一个大写字母 else: checkcode += str(random.randint(1,9)) # 生成1~9中的一个数字 print("验证码:",checkcode) # 输出生成的验证码
(2)运行结果如图所示:
5、实战一:大乐透号码生成器
使用random模块模拟大乐透号码生成器。选号规则:前区在1-35范围内随机产生不重复的5个号码,后区在1-12范围内随机产生不重复的2个号码。
(1)创建模块,代码如下:
1 import random 2 def GreatLotto(times): 3 Greatnumber = [] 4 for i in range(0,times): 5 numbers = [] 6 leftlist = list(range(1,36)) 7 leftnumber = random.sample(leftlist,5) 8 rightlist = list(range(1,13)) 9 rightnumber = random.sample(rightlist,2) 10 leftnumber.sort() 11 rightnumber.sort() 12 numbers = leftnumber + rightnumber 13 for n in range(len(numbers)): 14 if numbers[n]<10: 15 numbers[n] = '0'+ str(numbers[n]) 16 Greatnumber.append( numbers) 17 return Greatnumber
(2)引用模块,代码如下:
1 import sz1_1 2 print("大乐透生成器") 3 time = input("请输入要随即大乐透号码注数:") 4 Greatnumber = sz1_1.GreatLotto(int(time)) 5 for i in range(0,int(time)): 6 print('{} {} {} {} {} {} {}'.format(Greatnumber[i][0],Greatnumber[i][1], 7 Greatnumber[i][2],Greatnumber[i][3], 8 Greatnumber[i][4],Greatnumber[i][5], 9 Greatnumber[i][6]))
(3)运行结果如图所示:
6、实战二:春节集五福
最近两年流行春节集五福活动。现编程实现模拟春节集五福的过程。
(1)创建模块,代码如下:
1 import random 2 def Ji_Fu(): 3 fus=['爱国福','富强福','和谐福','友善福','敬业福'] 4 fu = random.sample(fus,1) 5 return fu 6 def fus(fu): 7 print('当前拥有的福:') 8 for i, j in fu.items(): 9 print(i,': ',j,'\t',end='') 10 def five_blessings(fu): 11 type=1 12 for i, j in fu.items(): 13 if j==0: 14 type=0 15 return type;
(2)引用模块,代码如下:
1 import sz2_1 2 print('开始集福啦~~~') 3 fu={'爱国福':0,'富强福':0,'和谐福':0,'友善福':0,'敬业福':0} 4 while sz2_1.five_blessings(fu)==0: 5 input('\n按下<Enter>键获取五福') 6 Strfu=sz2_1.Ji_Fu()[0] 7 print('获取到:' + Strfu) 8 fu[Strfu] += 1 9 sz2_1.fus(fu) 10 print('\n恭喜您集成五福!!!')
(3)运行结果如图所示:
7、实战三:封装用户的上网行为
当下很多人都会用一定的时间上网。现编程实现封装用户的上网行为,对用户的上网时间进行统计,当上网时间过长时,给出提示。
(1)创建模块,代码如下:
1 def net_play(time): 2 print("浏览网页",str(time) + "小时") 3 return time 4 def Watch_videos(time): 5 print("看视频",str(time) + "小时") 6 return time 7 def Play_game(time): 8 print("玩网络游戏",str(time) + "小时") 9 return time 10 def Study(time): 11 print( "上网学习",str(time) + "小时") 12 return time 13 def times(time): 14 if time >= 8: 15 print("今天上网时间共计" + str(time) + "小时,请保护眼睛,合理安排上网时间!") 16 return time
(2)引用模块,代码如下:
1 import sz3_1 2 name = "小明" 3 time = 0; 4 print(name,"上网时间、行为统计:") 5 time += sz3_1.net_play(1.5) 6 time += sz3_1.Watch_videos(2) 7 time += sz3_1.Play_game(3) 8 time += sz3_1.Study(2) 9 sz3_1.times(time)
(3)运行结果如图所示:
8、实战四:计算个人所得税
编写一个计算个人所得税的程序,随时掌握自己的工资需要缴纳多少个人所得税。
(1)创建模块,代码如下:
1 def my_tax(z): 2 if z <= 0: 3 print("NULL") 4 else: 5 if z <= 1500: 6 t = z * 0.03 7 elif z <= 4500: 8 t = z * 0.1 - 105 9 elif z <= 9000: 10 t = z * 0.2 - 555 11 elif z <= 35000: 12 t = z * 0.25 -1005 13 elif z <= 55000: 14 t = z * 0.3 -2755 15 elif z <= 80000: 16 t = z * 0.35 - 5505 17 else: 18 t = z * 0.45 - 13505 19 tt = "{:.2f}".format(t) 20 print(tt)
(2)引用模块,代码如下:
1 import sz4_1 2 salary = float(input("请输入月收入:")) 3 if salary>=7662: 4 money = salary - 7662 * 0.225 5 else: 6 money = salary * 0.775 7 z = money - 3500 8 print("应纳个人所得税税额为",end = "") 9 sz4_1.my_tax(z)
(3)运行结果如图所示:
标签:11,__,Python,height,模块,time,print,实验报告,def From: https://www.cnblogs.com/xiakong/p/16888685.html