2.Python常用数学运算函数
扫描二维码,浏览Python常用数学运算函数的具体介绍。
2.6.2Python输入输出函数及应用
1.print()函数及应用
在 Python 中,使用内置函数print()可以将结果输出到集成开发和学习环境(Integrated Development and Learning Environment,IDLE)或者标准控制台中。
(1)print(O函数的基本语法格式
print()函数的基本语法格式如下:
print(输出内容)
其中,输出内容可以是数值,也可以是字符串。如果是字符串则需要使用单引号或双引|号标注,此类内容将直接输出。如果输出内容是包含运算符的表达式,则此类内容将以计算结果的形式输出。
输出内容也可以是ASCIl表示的字符,但需要使用chr()函数进行转换,例如输出字符A使用print("A")或者使用print(chr(65))都可以实现。
(2)换行输出与不换行输出
默认情况下,print()函数的输出内容会自动换行,如果想要一次输出多个内容,而且不换行,则需要print(函数后加上end =^{1111} ,也可以将要输出的内容使用逗号“,”分隔后输出。
(3)将输出的值转成字符串
如果希望将print()函数输出的值转成字符串,可以使用str()或repr()函数来实现。str()函数用于返回一个用户易读的字符串。repr()函数用于产生一个解释器易读的字符串。
2.input()函数及应用
Python提供了input()函数,用于从标准输入中读入一行文本,默认的标准输入是键盘。input函数的基本语法格式如下:
变量名 = input("<提示文字>")
量名为保存输入结果的变量的名称,双引号内的提示文字用于提示要输
在Python3中,无论输入的是数字还是字符,输入内容都将被作为字符串读取。如果想要接收的是数值,需要进行类型转换。例如,要将字符串转换为整型数据,可以使用int)函数。
【技能训练2-7】演示Python输入输出函数及应用
【训练要求】
在 Jupyter Notebook 开发环境中创建 j2-07.ipynb,然后编写代码演示Python输入输出函数及应用。
【实施过程】
扫描二维码,浏览演示Python输入输出函数及应用的代码。
2.6.3Python3日期和时间函数
Python提供了time、datetime和calendar模块用于格式化日期和时间。
1.Struct_time 元组
很多Python函数使用由一个元组组合起来的9组数字处理时间,该元组就是struct_time元组,其9组数字的含义及取值如表2-12所示。
序号 | 含义 | 取值 |
1 | 年(4位数) | 0000到9999 |
2 | 月 | 1到12 |
3 | 日 | 1到31 |
4 | 小时 | 0到23 |
5 | 分钟 | 0到59 |
9 | 秒 | 0到61(60、61表示润秒) |
7 | 星期几 | 0到6(0表示星期一) |
8 | 一年的第几日 | 1到366(366表示润年) |
9 | 夏令时标识 | 1(夏令时)0(非夏令时)-1(不确定) |
2.time模块
time模块提供各种日期和时间相关的功能,用于获取和转换日期及时间。
Python的time模块下有很多函数可以用于转换常见日期格式,例如函数time.time()用于获取当前时间戳,每个时间戳都以自1970年1月1日0时0分0秒经过了多长时间来表示。时间间隔是以秒为单位的浮点数。
>>>importtime #导入time模块 |
>>>ticks=time.time( |
输出结果为: |
当前时间戳为:1585817589.8098445 |
时间戳适合做日期运算,但是1970年1月1日之前的日期就无法通过这种方式表示了。
3.datetime模块
datetime模块提供了处理日期和时间的类,既有简单的类,又有复杂的类。它虽然支持日期和时间算法,但其实现的重点是为输出格式化和操作提供高效的属性提取功能。datetime模块定义了如表2-13所示的几个类。这些类的对象都是不可变的。
序号 | 类名称 | 说明 |
1 | datetime.date | 表示日期,常用的属性有year,month和day |
2 | datetime.time | 表示时间,常用的属性有hour、minute、second、microsecond |
3 | datetime.datetime | 表示日期和时间 |
4 | datetime.timedelta | 表示两个date、time、datetime实例的时间间隔,分辨率(最小单位)可达 到微秒 |
5 | datetime.tzinfo | 时区相关信息对象的抽象基类。它们由datetime和time类使用,以提供自定 义时间的调整功能 |
9 | datetime.timezone | Python3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC(Universal TimeCoordinated,世界协调时)的固定偏移量 |
2.7Python函数定义及应用
函数能提高应用程序的模块化程度和代码的重复利用率,降低编程难度。函数是组织好的、可重复使用的、用来实现所需功能的、执行特定的任务的代码段,一般表达特定功能。
2.7.1定义 Python 函数
Python提供了许多内置的标准函数,例如print()、input()、range(等。我们也可以自己创建函数,这被称为自定义函数。
定义一个函数需要完成:指定函数的名称,指定函数里包含的参数和代码块结构。
Python中使用def关键字自定义函数,定义函数的基本语法格式如下:
def函数名称([0个或多个参数组成的参数列表]):
"<注释内容>"
<函数体>return [表达式]函数定义说明如下。
·函数定义部分以def关键字开头,后接函数名称、圆括号“)”和冒号“:”。函数名称在调用函数时使用。圆括号用于定义参数,任何传入参数和自变量都必须放在圆括号内,如果有多个参数,各参数使用逗号“,”分隔;如果不指定参数,则表示该函数没有参数,调用函数时,也不指定参数值。函数可以有参数也可以没有参数,若没有参数则必须保留空的圆括号“”,否则会出现异常。
·如果函数有返回值,则使用retum语句返回。retum语句用于退出函数,并选择性地向调用方返回一个值。如果函数中没有retum语句,或者省略了return语句的表达式,将返回None,即空值。
2.7.2调用Python函数
函数定义完成后,可以通过调用该函数执行函数代码,实现其功能。在编程过程中,可以将函数作为一个值赋值给指定变量。
调用函数的基本语法格式如下:
函数名称([0个或多个参数组成的参数列表])
要调用的函数名称,必须是已经定义好的。如果已定义的函数有参数,则调用时也要指定各个参数值;如果需要传递多个参数值,则各参数值使用逗号“,”分隔。如果已定义的函数没有参数,则直接写圆括号“”即可,圆括号必须保留。
调用函数时,如果函数只返回一个值,则该返回值可以被赋值给一个变量;如果返回多个值,则可以将其赋值给多个变量或一个元组。
【技能训练2-8】编写代码定义与调用计算矩形面积的函数
【训练要求】
在 JupyterNotebook开发环境中创建j2-08.ipynb,然后编写代码定义与调用计算矩形面积的函数。
【实施过程】
代码如下:
def area(width, height): "计算矩形面积函数" area=width \* height return area
width=4 |
height =5 |
area= area(width, height) print("area =", area) |
输出结果为: |
area=20 |
2.7.3Python函数变量作用域
Python变量的作用域是指代码能够访问该变量的区域范围。如果超出该区域范围,访问该变量时就会出现异常。在Python中,一般根据变量的有效范围将变量分为局部变量和全局变量两种类型。
1.局部变量
局部变量是指在函数内部定义并使用的变量。它只在函数内部有效,即定义在函数内部的变量拥有一个局部作用域,函数内部的局部变量名称只在函数运行时才会创建。在函数运行之前或运行完毕,所有的局部变量的名称都不存在。如果在函数外部使用函数内部定义的变量,就会出现NameError异常。
2.全局变量
全局变量是指能够作用于函数内部和外部的变量。全局变量主要有以下两种。
(1)在函数外部定义的变量拥有全局作用域。如果一个变量在函数外部定义,那么该变量不仅可以在函数外部访问,也可以在函数内部访问。
(2)对于在函数内部定义的变量,如果使用global关键字声明,则该变量也是全局变量,在函数外部也可以访问该变量,并且在函数内部还可以对其进行修改,但是在其他函数内部不能访问该变量。
说明当局部变量与全局变量重名时,若对函数内的局部变量赋值,也不会影响函数外的全局变量。尽管Python允许全局变量和局部变量重名,但是在实际开发时,建议不要这样做,这样做容易让代码混乱,很难分清哪些是全局变量,哪些是局部变量。
【技能训练2-9】编写代码演示Python全局变量与局部变量的使用
【训练要求】
在 Jupyter Notebook开发环境中创建j2-09.ipynb,然后编写代码演示Python全局变量与局部变量的使用。
【实施过程】
代码如下:
\mathtt{a g e}=20 #全局变量
def printAge10):age =50 #局部变量print("函数 printAge1中输出局部变量:age \mathrel{\mathop:}=^{\prime\prime} , age)
def printAge2():print("函数 printAge2 中输出全局变量:age =^{n} , age)
printAge10)
printAge2()
print("函数外部输出全局变量:age \equiv^{11} , age)
输出结果为:
函数printAge1中输出局部变量:age :=50 函数printAge2中输出全局变量:age =20 函数外部输出全局变量: a{\mathfrak{g}}{\mathfrak{e}}{=}20
2.8创建与导入Python模块
Python的模块(Module)是一个包含函数定义和变量定义的Python 文件,其扩展名是.py。一个.py文件就称为一个模块,一般把能够实现一定功能的代码放置在一个Python文件中作为一个模块,模块可以被其他程序导入并使用,方便其他程序使用该模块中的函数等。另外,使用模块也可以避免函数名称和变量名称产生冲突。
模块中除了函数定义,还可以包括可执行的代码,这些代码一般用来初始化这个模块,这些代码只有在第1次被导入时才会被执行。
Python提供了强大的模块支持,不仅Python自身提供了大量的标准模块,还有很多第三方提供的模块,也允许自定义模块。强大的模块支持提高了代码的可重用性、可维护性,即编写好一个模块后,只要是实现该功能的程序,都可以导入这个模块来实现所需的功能,这样可极大地提高程序的开发效率。所以我们在编写程序的时候,会经常引用其他模块,包括Python内置的模块和来自第三方的模块。
每个模块有各自独立的符号表,在模块内部被所有的函数当作全局符号表来使用。所以在模块内部可以放心地使用全局变量,而不用担心与其他模块中的全局变量搞混。
2.8.1创建 Python 模块
创建模块时可以将相关的变量定义和函数定义编写在一个独立的Python文件中,并且将该文件命名为“模块名称.py”。设置的模块名称尽量不要与Python自带的标准模块名称重复。模块创建完成后,就可以在其他程序中导入并使用该模块了。
2.8.2导入 Python 模块
Python的内置模块不需要安装,但在使用内置模块的时候需要导入,例如importsys表示导入sys模块。
Python的模块或程序文件中可以导入其他模块,可以使用import或者from..import语句来导入相应的模块。通常在一个模块或程序文件的最前面使用import语句来导入所需模块,当然这只是一个惯例,而不是强制的,被导入的模块名称将被导入当前操作模块的符号表中。
1.使用import语句导入模块
2.使用from...import语句导入模块
3.使用from...import ^{*} 语句导入模块中的所有对象扫描二维码,浏览Python模块的多种导入方法。

2.8.3下载与安装第三方模块
Python程序开发时,除了可以使用Python内置的标准模块,还有很多第三方模块可以使用。使用第三方模块前,需要先下载并安装对应模块,然后就可以像使用Python内置的标准模块一样导入并使用了。下载和安装第三方模块可以使用 Python 提供的pip 命令实现。pip命令的基本语法格式如下:
Python数据分析基础与应用(微课版)
pip <command>[modulename]
其中,command用于指定要执行的命令,常用命令有install(用于安装第三方模块)uninstall(用于卸载已经安装的第三方模块)list(用于显示已经安装的第三方模块)等。modulename为可选参数,用于指定要安装或者卸载的模块名称,有时还可以包括版本号。当command为install或者uninstall时不能省略modulename。
pip install<模块名称> #安装模块pip install--upgrade<模块名称> #更新模块pip uninstall<模块名称> #卸载模块例如,安装第三方模块NumPy时,可以在命令提示符窗口中输入以下代码:
pip install numpy
执行上面的代码,将开始在线安装NumPy模块。
【说明】必须通过设置环境参数配置好可执行文件pip.exe的路径,否则在命令提示符窗口无法识别pip命令。
也可以在Jupyter Notebook的单元格中执行pip 命令,只需在命令前加半角感叹号“!”,例如执行!pipinstallnumpy命令进行模块安装。
在使用第三方模块前需要进行导入,例如执行import pandas 命
2.9 创建与使用Python 包
使用模块可以避免函数名称、变量名称产生冲突,但如果模块也重名应该怎么办呢?Python的包(Package)可以解决模块名称的冲突问题。包是一个分层的目录结构,它将一组功能相近的模块组织在一个文件夹中,这样既可以起到规范代码的作用,又能避免模块的命名冲突。
包可以简单理解为文件夹,只不过在该文件夹下必须存在一个名称为“_init_.Py”的文件。实际软件项目开发时,通常会创建多个包用于存放不同类型的文件。
包提供了一种管理Python模块命名空间的形式,即“包名称.模块名称”的形式。例如一个模块的名称是A.B,它表示包A中的模块B。与使用模块的时候不用担心不同模块之间的全局变量相互影响一样,采用“包名称.模块名称”这种形式也不用担心出现不同包之间的模块重名的问题。

扫描二维码,浏览创建与使用Python包的具体方法。
应用与实战
【任务2-1】计算与输出购买商品的优惠金额与应付金额
【任务描述】
\odot 在 Jupyter Notebook 开发环境中创建 t2-01.ipynb。
⊚ 在 Python程序文件t2-01.ipynb 中编写代码实现以下功能:计算与输出购买商品的总金额、运费、返现金额、折扣率、优惠金额、应付金额。
\circled{3} 在JupyterNotebook开发环境中运行Python程序文件t2-01.ipynb,输出购买商品的总金额、运费、返现金额、折扣率、优惠金额、实付总额等数据。
【任务实现】
EPyCharm开发环境中创建文件t2-01.py,然后编写代码与输出对应
扫描二维码,浏览计算与输出购买商品的优惠金额与应付金额的实现过程、程序代码与输出结果。
【任务2-2】应用for循环语句显示进度的百分比
【任务描述】
① 在 PyCharm 开发环境中创建 Python 程序文件t2-02.py。
⊚ 编写程序,应用for循环语句实现在一行中显示下载百分比进度。
【任务实现】
计算与输出购买商品
的优惠金额与
应付金额
在PyCharm开发环境中创建文件t2-02.py,然后编写代码与输出对应的结果扫描二维码,浏览应用for循环语句显示进度的百分比的实现过程、程序代码与输出结果。
【任务2-3】自定义与应用实现要求功能的函数

【任务描述】
自定义函数实现以下功能。
① 定义与应用根据消费次数计算得分的函数frequency()。
⊚ 定义与应用将日期格式转换为时间戳的函数get_timestamp()。
③ 定义与应用从字符串中获取日期格式数据的函数sptime()。
【任务实现】
在JupyterNotebook开发环境中创建文件t2-03.ipynb,然后在单元格中编写代码与输出对应的结果。
扫描二维码,浏览自定义与应用实现要求功能的函数的实现过程、程序代码与输出结果。
自定义与应用实现要求功能的函数
【任务2-4】使用Collections实现数据统计
【任务描述】
Counter类是字典的子类,其功能是统计可迭代序列中各个元素出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为键,其计数作为值。
在JupyterNotebook开发环境中创建文件t2-04.ipynb,然后在单元格中编写代码使用Collections实现数据统计。
【任务实现】
在JupyterNotebook开发环境中创建文件t2-04.ipynb,然后在单元格中编写代码与输出对应的结果。

扫描二维码,浏览使用Collections实现数据统计的实现过程、程序代码与输出结果。
使用Collections实现数据统计
在线练习与考核
扫描二维码,完成本模块的在线练习与考核。

Fundamentals and Applications of Python Data Analysis