首页 > 编程语言 >Python实验报告——第8章 模块

Python实验报告——第8章 模块

时间:2022-11-16 17:57:51浏览次数:76  
标签:__ fu Python 模块 time print 实验报告 def

Python实验报告——第8章 模块

 

 实验报告

【实验目的】 

1.掌握Python内置的标准模块和第三方模块的使用。

【实验条件】

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

 

【实验内容】

1.完成第八章  文件及目录操作 实例01-04,实战一到实战四

 

 

实例01:创建计算BMi指数的模块

   创建一个用于根据身高、体重计算BMI 指数的模块,命名为 bmi.py,其中 bmi为模块名,.py为扩展名。

 

代码如下:

复制代码
1 def fun_bmi(person, height,weight) :
2     '''功能:根据身高和体重计算BMI指数'''
3     print(person +"的身高: " + str(height)+ "米\t体重: " + str(weight)+
4           "千克")
5     bmi=weight/ ( height*height)
6 
7 def fun_bmi_upgrade(*person) :
8     #功能:根据身高和体重计算BMI指数(升级版)
9 # 此处省略了函数主体代码
复制代码

 

 

 

实例02:导入两个包括同名函数的模块

   创建两个模块,一个是矩形模块,其中包括计算矩形周长和面积的函数;另一个是圆形,其中包括计算圆形周长和面积的函数。然后在另一个Python文件中导入这两个模块,并调用相应的函数计算周长和面积。

 

代码如下:

复制代码
 1 #rectangle.py
 2 def girth(width, height):
 3     return (width + height) * 2
 4 
 5 
 6 def area(width, height):
 7     return width * heightif
 8 
 9 
10 if __name__ == '__main__':
11     print(area(10, 20))
复制代码 复制代码
 1 #circular.py
 2 import math
 3 PI = math.pi
 4 def girth(r):
 5     return round(2*PI*r, 2)
 6 
 7 def area(r):
 8     return round(PI*r*r, 2)
 9 
10 if __name__ == '__main__':
11     print(girth(10))
复制代码 复制代码
1 #compute.py
2 import rectangle as r
3 import circular as c
4 if __name__ == '__main__':
5     print("圆形的周长为: ", c.girth(10))
6     print("矩形的周长为: ", r.girth(10, 20))
复制代码

 

 

 运行结果如下:

 

 

 

 

 

实例03:在指定包中创建通用的设置和获取尺寸的模块

  创建一个名称为settings的包,在该包下创建一个名称为size的模块,通过该模块实现设置和获取尺寸的通用功能。(1)在 settings包中,创建一个名称为size的模块,在该模块中,定义两个保护类型的全局变量,分别代表宽度和高度,然后定义一个change()函数,用于修改两个全局变量的值,再定义两个函数,分别用于获取宽度和高度。(2)在settings包的上一层目录中创建一个名称为main.py的文件,在该文件中导入.settings包下的size模块的全部定义,并且调用change()函数重新设置宽度和高度,然后再分别调用getWidth()和getHeight()函数获取修改后的宽度和高度。

 

 

代码如下:

复制代码
 1 #size.py
 2 _width = 800
 3 _height = 600
 4 def change(w,h):
 5     global _width
 6     _width = w
 7     global _height
 8     _height = h
 9 
10 def getwidth():
11     global _width
12     return _width
13 
14 def getHeight():
15     global _height
16     return _height
复制代码 复制代码
1 #main.py
2 from settings.size import *
3 
4 if __name__ =='__main__':
5     change(1024, 768)
6     print('宽度: ', getwidth())
7     print('高度: ', getHeight())
复制代码

 

 

 

 

 运行结果如下:

 

 

 

 

 

实例04:生成由数字、字母组成的4位验证码

  在IDLE中创建一个名称为checkcode.py的文件,然后在该文件中导入 Python标准模块中的random模块(用于生成随机数),然后定义一个保仔验让码的受里,世片 1o书饮A乎书的哈证码,最后输出在该循环中,调用random模块提供的randrange()和 randint()方法生成符合要求的验证码,最后输出生成的验证码。

 

代码如下:

复制代码
 1 import random
 2 checkcode = ""
 3 for i in range(4):
 4     index = random.randrange(0, 4)
 5     if index != i and index + 1 != i:
 6         checkcode += chr(random.randint(97, 122))  # 生成a~z中的一个小写字母
 7     elif index + 1 == i:
 8         checkcode += chr(random.randint(65, 90))  # 生成A~Z中的一个大写字母
 9     else:
10         checkcode += str(random.randint(1, 9))
11 print("验证码:", checkcode)
复制代码

 

 

 运行结果如下:

 

 

 

 

 

 

 

 

实战一:大乐透号码生成器

  使用Random模块模拟大乐透号码生成器。选号规则为:前区在1~35的范围内随机产生不重复的5个号码,后区在1~12的范围内随机产生不重复的2个号码。效果如图8.18所示。

 

 

 

 

代码如下:

复制代码
 1 import random
 2 def number():
 3     a=[random.randint(1,35) for i in range(5)]
 4     list1=[]
 5     for i in a:
 6         if i not in list1:
 7             list1.append(i)
 8         else:
 9             i=random.randint(1,35)
10             list1.append(i)
11         list1.sort()
12     a=[str(i) for i in list1]
13     b=[random.randint(1,12) for i in range(2)]
14     o=[]
15     for i in b:
16         if i not in o:
17             o.append(i)
18         else:
19             i=random.randint(1,12)
20             o.append(i)
21         o.sort()
22     b=[str(i) for i in o]
23     c=[" "*5]
24     for i in range(5):
25         if len(a[i])==2:
26             for j in range(2):
27                 if len(b[j])==2:
28                     pass
29                 else:
30                     b[j]='0'+b[j]
31         else:
32             a[i]='0'+a[i]
33     g=a+c+b
34     for i in g:
35         print(i,end=" ")
36 print("大乐透号码生成器")
37 k=int(input("请输入要生成的大乐透号码注数:"))
38 for i in range(k):
39     number()
40     print("")
复制代码

 

 

 

 

 运行结果如下:

 

 

 

 

实战二:春节集五福

  最近两年流行春节集五福活动。现编程实现模拟春节集五福的过程。效果如图8.19所示。

 

 

代码如下:

复制代码
 1 import random
 2 # 抽五福的方法
 3 def Ji_fu():
 4     fus = ['爱国福', '富强福', '和谐福', '友善福', '敬业福']
 5     fu = random.sample(fus, 1)
 6     return fu
 7 
 8 # 打印当前拥有的所有福
 9 def fus(fu):
10     print('当前拥有的福:')
11     # 字典的键值对遍历方法 打印福卡
12     for i, j in fu.items():
13         print(i, ':', j, '\t', end='')
14 # 判断是否集齐五福
15 def fu_ready(fu):
16     # 设置一个集齐的标识flag,等于1表示集齐了
17     flag = 1
18     for i,j in fu.items():
19         if j == 0:     # 有一个福卡的数量为0
20             flag = 0   # 标识为0,可以继续集福
21     return flag
22 print('开始集福了…………')
23 # 定义一个五福字典 保存用户的福卡
24 fu = {'爱国福': 0, '富强福': 0, '和谐福': 0, '友善福': 0, '敬业福': 0}
25 # 用一个while语句循环获取五福,直到集齐为止
26 count = 0   # 设置一个计数器,记录集福的次数
27 while fu_ready(fu) == 0:  # 集齐标识为0
28     input("\n按下<enter>键获取福卡:")
29     getfu = Ji_fu()[0]    # 进行抽卡
30     print('获取了:', getfu)
31     fu[getfu] += 1             # 将抽到的卡加入五福字典,相应数量+1
32     fus(fu)               # 调用方法打印当前拥有的五福
33     fu_ready(fu)          # 调用方法判断是否集齐
34     count +=1
35 print("\n***五福已经集齐,真是有福之人***")
36 print("一共集福",count,'次')
复制代码

 

 

 运行结果如下:

 

 

 

 

 

 

 

实战三:封装用户的上网行为

  当下很多人都会用一定的时间上网。现编程实现封装用户的上网行为,对用户的上网时间进行统计,当上网时间过长时,给出提示。效果如图8.20所示。

 

 

 

代码如下:

复制代码
 1 # 网页浏览时间统计
 2 def web(time):
 3     print("浏览网页:"+str(time)+"小时;")
 4     return time
 5 # 看视频时间统计
 6 def video(time):
 7     print("看视频:"+str(time)+"小时;")
 8     return time
 9 # 玩网络游戏时间统计
10 def playgame(time):
11     print("玩网络游戏:"+str(time)+"小时;")
12     return time
13 # 上网学习时间统计
14 def study(time):
15     print("上网学习:"+str(time)+"小时。")
16     return time
17 # 合计上网时间统计
18 def total(time):
19     print('今天上网时间共计:'+str(time)+"小时,",end=' ')
20     if time >= 8:
21         print("请保护眼睛,合理安排上网时间!")
22     else:
23         print("比较合理,但也要注意休息!")
24 
25 
26 name = '小明'
27 print(name, '上网时间、行为统计……')
28 t1 = web(1.5)
29 t2 = video(2)
30 t3 = playgame(3)
31 t4 = study(2)
32 time = t1 + t2 + t3 + t4
33 total(time)
复制代码

 

 

 运行结果如下:

 

 

 

 

 

实战四:计算个人所得税

  编写一个计算个人所得税的程序,随时掌握自己的工资需要缴纳多少个人所得税。效果如图8.21所示。

 

 

代码如下:

复制代码
 1 # 根据月收入算个税模块
 2 def tax(monthmoney):
 3     # 最低起征点3500
 4     ds = 3500
 5     baoxian = 7662
 6     # 养老保险
 7     yanglao = monthmoney * 0.08
 8     # 医疗保险
 9     yiliao = monthmoney * 0.02
10     # 失业保险
11     shiye = monthmoney * 0.005
12     # 公积金
13     housem = monthmoney * 0.12
14     # 计算三险一金总额,如超过上限按上限算
15     demoney = yanglao + yiliao + shiye + housem
16     if demoney >= 7662:
17         demoney = 7662
18     # 计算应征税额
19     lastmoney = monthmoney - demoney - ds
20     # 按不同档次征税,定义税额taxes
21     if lastmoney <= 0:
22         taxes = 0
23     elif 0< lastmoney < 1500:
24         taxes = lastmoney * 0.03
25     elif 1500 <= lastmoney < 4500:
26         taxes = lastmoney * 0.1 - 105
27     elif 4500 <= lastmoney < 9000:
28         taxes = lastmoney * 0.2 - 555
29     elif 9000 <= lastmoney < 35000:
30         taxes = lastmoney * 0.25 - 1005
31     elif 35000 <= lastmoney < 55000:
32         taxes = lastmoney * 0.3 - 2002
33     elif 55000 <= lastmoney < 80000:
34         taxes = lastmoney * 0.35 - 5505
35     elif 80000 <= lastmoney:
36         taxes = lastmoney * 0.45 - 13505
37     # if lastmoney < 0:
38     #     taxes = 0
39     return taxes
40 
41 
42 m = float(input("请输入您的月收入总额:"))
43 taxes = tax(m)
44 print('您应征个人所得税金额为:{:.2f} 元'.format(taxes))
复制代码

 

 

 

 运行结果如下:

标签:__,fu,Python,模块,time,print,实验报告,def
From: https://www.cnblogs.com/lxy1600692761/p/16896810.html

相关文章

  • python JSON模块
    一、JSON介绍JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和编写。二、常用方法方法描述json.loads()将JSON字符串转化为Python对......
  • 11月16日内容总结——OSI传输层之TCP与UDP协议、应用层简介、socket模块介绍及代码优
    目录一、传输层之TCP与UDP协议1.TCP协议(重要)三次握手建链接四次挥手断连接2.UDP协议3.tcp和udp的对比二、应用层简介三、socket模块1、简介2、基于文件类型的套接字家族3......
  • python垃圾回收机制
    python垃圾回收机制主要分为:1.引用计数2.标记清除3.分代回收python的引用计数机制:python是根据对象的引用计数是否为0,来进行垃圾回收,释放内......
  • socket模块
    目录一、socket模块(套接字)1.socket简介2.代码实现3.代码优化一、socket模块(套接字)​socket上应用层与TCP/IP协议通信中间的软件抽象层,帮助我们编写基于网络进......
  • OSI七层协议之传输层,应用层,socket模块简介,socket模块基本使用,黏包问题
    目录OSI七层协议之传输层,应用层,socket模块简介,socket模块基本使用,黏包问题今日内容概要今日内容详细传输层之TCP与UDP协议应用层socket模块socket代码简介代码优化半连接池......
  • 网络编程2 TCP、UDP协议 与socket模块
    TCP与UDP协议1.TCP协议(重点)"""凡事必须有回复才能继续"""三次握手连接-1.TCP协议也称为可靠协议,数据不容易丢失数据不容易丢失的原因......
  • TCP\UDP协议 socket模块
    目录传输层主要协议TCP协议三次握手TCP协议反馈机制四次挥手洪水攻击UDP协议socket模块socket代码简介socket.socket()server.bind()server.accept()sock.recv()sock.send......
  • python的文件操作
    步骤1、打开文件:使用内置函数open2、进行操作(读或者写)读:read方法或者写:write方法3、关闭文件close方法#1、打开文件,返回文件的句柄f=open(file="xxx",mode=......
  • socket 模块
    socket模块我们知道基于网络编写程序时,需要使用OSI七层协议里的七层,每一层都要写。很复杂很繁琐。socket模块相当于集成了这一块,封装了复杂的接口提空了简单快捷的接......
  • python源码通过词语标记化器tokenize提取注释并正则匹配测试用例作者名
    提取代码如下importtokenizeimportrewithtokenize.open('readcomment.py')asf:list=[]fortoktype,tok,start,end,lineintokenize.generate_t......