首页 > 编程语言 >Python实验报告(第11周)

Python实验报告(第11周)

时间:2022-11-14 18:22:17浏览次数:41  
标签:11 __ Python height 模块 time print 实验报告 def

   实验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

相关文章

  • Win11右键菜单改为Win10设计【自用】
    出处:【Win11右键菜单改为Win10设计】https://www.bilibili.com/video/BV1gB4y1L7Uj?vd_source=5e9bda91f690b8bf5340dc78c84bccbd修改:reg add HKCU\Software\Classes\C......
  • 11-Go语言进阶-01
    包的使用引入时,用.做前缀,使用时可以省略包名,不建议这么使用可以前缀别名"_"下划线操作,可以执行包里面对应的init函数首字母大写的字段和实体,才能被外部引用init函数......
  • python-错误和异常-常见错误
    1.无效语法#coding=utf-8;a=“python”;printa;运行结果:a=“python”;^SyntaxError:invalidsyntax分析:“”使用的是中文格式。2.ZeroDivisionEr......
  • Python代码写得丑怎么办?推荐几个神器拯救你
    Python编程语言需要遵循PEP8规范,但是初学者往往记不住这个规范,代码写得比较丑。本文推荐几个神器来拯救奇丑无边的python代码。一、Jupyternotebook篇Jupyternotebook的......
  • Java学习——11.14
    将近4天没更新啊,为什么呢,主要是面向过程太难太抽象了,不过好在我用四天还是将他理解了。1.封装(关键字:private)保护私有的方法和属性。set直接修改private  ......
  • 巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from
    一.今日主要内容总览(重点)1.生成器(目的:帮助我们创建对象)(1)生成器的本质就是迭代器(2)一个一个的创建对象(3)创建生成器的方式:1.生成器函数......
  • 两行代码完成特征工程-基于Python的特征自动化选择代码(提供下载)
    实现的功能该选择器基于Python编写,有五种方法来标识要删除的特征:缺失值唯一值共线特征零重要性特征低重要性特征使用方法 特征选择器(FeatureSelector)的用法在这个Jupyter......
  • AI基础:Python开发环境设置和小技巧
    0.导语本文总结了Windows下Python环境的安装,包括Anaconda、Jupyternotebook和Pycharm的安装和基本使用技巧,方便初学者搭建Python环境。这个是AI基础的必备步骤。目前已经发......
  • Python使用zipfile模块压缩目录(包含空目录)、压缩文件、解压文件
    主要功能:压缩目录、压缩文件、解压文件importosimportzipfile#压缩目录、或文件defzip(srcPath=None,zipFilePath=None,includeDirInZip=True):ifnotzi......
  • 06python序列
    数据结构是Python中一个很重要的概念,是以某种方式(如通过编号)组合起来的数据元素(如数字、字符乃至其他数据结构)的集合。在Python中,最基本的数据结构是序列(sequence)。......