Python办公自动化从入门到精通-1

1初识python

就第一天的学习来看,python是比较于其他的计算机语言来说很简洁很容易上手的一门计算机语言,在这几年ai的发展之下,作为创建绝大多数ai的计算机语言,python也是渐渐发展为最多人使用的计算机语言。

python具有以下五个及更多的优点:

第 1 点,简单。Python 语言代码简洁,只需要几行代码就可以实现一个具体的功能,对比之下,其他编程语言可能需要几倍的代码量。

第 2 点,可读性高。使用 Python 语言编写出的代码风格清晰明了、可读性高。

第 3 点,可扩展性强。Python 具有丰富的第三方库,可以满足项目开发的多种需求,使用库时像搭积木一样把库搭建在一起就可以实现多种功能。下载和安装库的方法也很简单,只需一行命令即可自动完成下载和安装。

第 4 点,可嵌入性强。Python 语言代码中可以嵌入其他编程语言代码,例如在 Python 语言代码中嵌入 C 语言代码。由于 C 语言代码的执行速度非常快,因此当程序项目对执行速度有要求时,可以在 Python 语言代码中嵌入 C 语言代码。还可以将 Python 语言嵌入其他软件,实现软件的灵活操作。

第 5 点,数据处理能力强。Python 语言中包含大量用于数据处理的函数和库,不仅可以轻松处理大量数据,其计算速度也非常快。

在编写python语言之前,我们需要了解python的开发环境是由翻译器和编辑器组成,翻译器是计算机识别代码的工具,编辑器是用于编写代码的工具,而python的开发环境把这两者结合,我们只需要进入https//www.python.org/downloads/进行下载即可,根据自己的电脑系统下载安装。

在计算机磁盘中找到下载好的 Python版本,选择 Python安装文件并单击鼠标右键,在弹出来的快捷菜单中单击 “以管理员身份运行”。在弹出来的安装界面中勾选 “Add Python x.x to PATH”,将 Python 的安装路径自动添加到系统环境变量。这能为后面第三方库的安装和在命令提示符窗口中运行代码文件提供便利。

单击“install now”选择默认路径安装python

程序的实现分为 4 个步骤,分别为打开代码编辑器、编写代码、保存文件、运行代码。

Python 语言代码的特点主要有以下 4 个。 第 1 个,在运行多行代码时,会以从上往下的顺序来执行。例如输入图 1-32 所示的代码,运行代码后输出内容的次序同输入代码的次序是一致的,依次为 hello world、Python、happy,如图 1-33 所示。 第 2 个,代码有严格的缩进要求,主要表现为代码开头的空格个数。1.3.3 小节提及代码需要靠左顶格书写,即代码开头的空格个数为 0(后续章节还会介绍代码开头有多个空格的情况)。 第 3 个,Python 代码支持汉字,这在很大程度上提高了代码的可读性。例如图 1-34 所示的代码,该代码中加入了汉字,运行代码后的输出结果如图 1-35 所示,该运行过程中无报错,说明 Python 可以识别汉字。 第 4 个,变量在使用过程中无须提前定义。该内容在第 2 章会涉及,因此这里不做过多介绍。

2Python的语法元素

在编程语言中,函数是指可以实现某种特定功能的代码块。更为通俗的说法是具有特定功能的类似于英语单词的代码即为函数。给具有特定功能的代码块指定的名字,即为函数名。要使用这些具有特定功能的代码块,需要借助函数名来实现,具体形式由函数名、括号组成,例如用于输出程序信息的print()函数、用于测量数据长度的len()函数、用于获取最大数据值的max()函数等。

函数分为内置函数和自定义函数。内置函数是指编程语言内部编写好的具有特定功能的函数,这些内置函数可以直接通过函数名调用。自定义函数是用户自己使用代码创建的新函数,通常是为了补充内置函数不具有的功能(自定义函数将在第 5 章进行介绍)。

不同编程语言都有各自的函数,在 Python 语言中可以通过如下代码获取 Python 的全部内置函数名。

print(dir(__builtins__))

2.1输出函数print()

函数有统一的使用形式,一般是在函数名后面加上英文格式的括号。括号中可以填入参数,当输入不同的参数时,执行函数后将获得(返回)不同的结果。函数的使用形式如下:

函数名(参数)

print()函数可以通过键盘将你输入的信息输出到计算机屏幕上,它的功能是输出参数的内容,下面列举一些使用方式

第一种,参数为字符串,格式一般为:

print("参数")

输出为:

参数

第二种,参数为变量,格式一般为:

参数 = 2

print(参数)

输出为:

2

第三种,参数为表达式,格式一般为:

参数一 = 1

参数二 = 2

print(参数一+参数二)

输出为:

3

第四种,参数为多个参数,格式一般为:

print(参数一,参数二,参数三,...,参数n)

输出为:

参数一 参数二 参数三 ... 参数n

可以注意到在多个参数中,print()函数中用于分隔参数的","在输出中变为了空格,而在多个参数的print()函数中前三种使用方式也可以用于第四中,比如:

a = 1

b = 2

print('计算结果为:',a+b)

输出为:

计算结果为: 3

第五种,输出末尾设置,在两句及以上的print()函数输出时,每个print()函数在执行完之后都是默认换行的,如果想将两个print()函数的输出内容连接在一起,就在第一个print()函数的参数中加入一个参数end,格式一般为:

print(参数一,参数二,参数三,...,参数n,end=" ")

而end" "中间可以填入信息,比如:

print(1,end="##")

print(2)

输出为:

1##2

第六种,参数为函数,代码程序会计算出此函数的结果,在使用print()函数将结果输出。

print()函数的参数还有很多,以上的六种为常用的几种情况。

2.2元素的命名

元素的命名是指给数据元素设置一个名称,一方便后期使用这些数据,主要包括变量的命名,函数的命名及类的命名,这3种命名的规则基本是相同的。函数的命名和类的命名将分别在第5章和第6章具体介绍,本小节主要介绍变量的命名规则。

在python语言中,变量的名称是不能随意定义的,需遵守一下4条规则。

第1条规则,使用大小写字母、数字、下画线、汉字及它们的组合对变量进行命名。

比如:

my_name = 3.141592602

我的name = 100019

_1234 = "hello"

my_@wi = 12305 print(my_name,我的name,_1234,my_@wi)

print(my_name,我的name,_1234,my_@wi)

无法输出,存在错误,前3个变量名均为合法的,但第4个变量名my_@wi是非法的。@并不在字母(a~z,A~Z)、数字、下画线或汉字的范围内,因此@不能用于变量名。

第2条规则,变量名不能以数字作为开头,变量名的中间不能有空格。

比如:

3my_name = "张三"

我的 name = "李四"

print(3my_name,我的 name)

无法输出,存在错误,第一行代码中3位于开头,该变量名为非法的,第二行代码中变量名中间含有空格,变量名非法。

第3条规则,变量名不能和保留字(也称关键字)相同

保留字是编程语言内部已被使用的具有特定功能的名称,是Python代码的基础,大部分的函数都是在保留字的基础上创建的。在Python语言中可以通过使用以下代码查询全部保留字:

print(help('keywords'))

第4条规则,变量名尽量不要与python的内置函数名相同

当变量名与python的内置函数名相同时,虽然不会报错,但会导致无法使用python内置函数。

2.3基本数据类型

数据类型是指数据的属性。例如 “中国梦” 是一段文本信息,在 Python 语言中,文本信息是字符串类型的数据。数学中的数字 12 是数值类型的数据,而一个学生的学号 “20210101” 却不是。数值可以进行加、减、乘、除运算,而文本信息不能进行运算,这里的学号是无法进行运算的,因此它属于文本信息。在生活中存在很多不可用于运算的信息,例如手机号码、身份证号码、地区邮编等,它们都属于文本信息。

Python 语言提供的数据类型有数值类型、字符串类型、元组类型、集合类型、列表类型和字典类型等。本小节主要介绍数值类型和字符串类型,元组类型、列表类型和字典类型将在第 4 章进行介绍。用户也可以构造自己的数据类型,这部分内容将在第 6 章进行介绍。

数值类型

Python 中提供的数值类型包含整数类型、浮点数(对应数学中的小数)类型和复数类型。数值类型较为简单,与数学中的概念相似。数值类型的数据可以进行运算,数据之间的运算符号称为操作符,在 Python 中,操作符的表示形式和描述下表所示。

操作符描述
+加号
-减号
*乘号
/除号
//整除,表示两个数值相除后的值不包含小数
%求余数(整除后的余数)
**求次幂(次方)

Python 中还有一种增强赋值操作符,是指将赋值语句中的等号和操作符结合在一起。常见的增强赋值操作符下表所示。

增强赋值操作符描述(如果 a=2)
+=a += 3 等价于 a = a+3,结果为 5
-=a -= 3 等价于 a = a-3,结果为 -1
*=a= 3 等价于 a = a3,结果为 6
/=a /= 3 等价于 a = a/3,结果为 0.666666…
//=a //= 3 等价于 a = a//3,结果为 0
%=a %= 3 等价于 a = a%3,结果为 2
**=

a = 3 等价于 a = a3,结果为8

除了使用操作符对数值进行运算,Python语言还为数值类型提供了许多函数功能,例如round()函数、max()函数和min()函数。round()函数用于对数值进行四舍五入运算。其使用形式如下:

round(参数一,参数二)

比如

round(3.1415,2)

输出为:

3.14

对参数一进行四舍五入,而参数二是限定参数一的小数位数。

min()函数与max()函数类似。min()函数在参数中选择最小数进行输出

字符串类型

要处理的字符串信息(即文本信息)非常多,在Python语言中,字符串信息要用引号引起来,可以使用单引号,也可以使用双引号。例如图2-21所示的代码,第1行代码中的文本信息使用了双引号,第2行代码中的文本信息使用了单引号,但执行结果均是正确的。

由于字符串类型数据和数值类型数据的属性不同,因此字符串没有数值类型数据中可用于运算的操作符,但字符串可进行截取部分内容、将多个字符串连接一起、改变字符串的大小写等操作。

字符串索引

字符串索引和字符串切片都可用于获取字符串中的部分内容。字符串索引是指获取字符串中的一个字符,而切片是指获取字符串中的一个或多个字符。字符串索引的使用形式如下:

字符串[索引号]

在最开始,我们需要了解它们的存储方式,从左往右为0,1,2...,而从右往左为-1,-2,-3...,可以看出左边最前面为0,而右边最前面为-1,举个例子:

a = "我爱你 中国"

print(a[4])

print(a[-2])

输出为:

字符串切片

字符串切片可以从字符串中获取一个或多个字符信息。其使用形式如下:

字符串[下标1:下标2]

a = "我爱你中国 中国梦"[3:8]

print(a)

输出为:

中国 中国梦

字符串切片还有一种使用形式,即步长切片,步长切片是指跨步截取字符信息。其使用形式如下:[下标1:下标2:步长]

方括号里第 3 个参数 “步长” 是指在索引号为 “下标 1” 到 “下标 2” 的字符串中,每间隔 “步长” 个位置就截取一个字符信息。

比如

a="我爱你中国 爱中国"[1:8:2]

print(a)

输出为:

爱中 国

步长的值可以为正数,也可以为负数,如果为负数表示从队尾到队头的方向截取字符串。

当步长值为正数时,“下标1”的值必须小于“下标2”的值,否则无法截取到字符信息。因为正数表示从队头到队尾的方向截取字符信息,如果“下标1”大于“下标2”,则“下标1”位于“下标2”的后面,所以从方向上是无法截取到字符信息的。当步长为负数时,“下标1”的值必须大于“下标2”的值(例如-1大于-8),否则也会因为方向的原因无法截取到字符信息。

字符串连接

将多个字符串连接在一起,可以用加号进行操作,比如:

a = "python"+"人工智能"

print(a)

输出为

python人工智能

a = "python"*3

print(a)

输出为

pythonpythonpython

字符串函数

Python 为字符串提供了很多函数和方法,接下来先介绍len()函数。其使用形式如下:len(参数)

功能:用于测量参数的长度,如果参数的数据类型为字符串类型,则统计字符串中字符的个数。

字符串方法

字符串方法是指专属于字符串类型数据的方法,只能对字符串类型数据进行操作。其使用形式如下:数据.方法名(参数)

用于处理字符串的方法较多,接下来主要介绍其中 6 种常用方法,分别是str.count()str.replace()str.strip()str.split()str.join()str.format()方法,其中str表示字符串类型数据。在办公自动化领域中处理文本字符时,经常会使用到这些方法,因此读者要能熟练掌握这些方法。

第 1 种,str.count()方法。

其使用形式如下:str.count(参数)

功能:统计字符串str中参数出现的次数。

a = "张三工资3500李四工资3800王五工资3500赵六工资3500".count("3500")

print(a)

输出为:

3

第 2 种,str.replace () 方法

使用形式:str.replace(参数1, 参数2)

功能:将字符串 str 中的参数 1 替换为参数 2

a = "张三工资3500李四工资3800王五工资3500".replace("3600")

print(a)

输出为:

张三工资3600李四工资3800王五工资3600

str.replace () 方法在执行后返回的是新的值,而不是直接修改原来的 str 值。例如图 2-38 所示的代码,该代码中存在两个变量 a 和 b,执行 a.replace () 方法之后,a 变量的值是不会改变的,因此代码执行后输出的 a 和 b 的值也是不同的。

第 3 种,str.strip () 方法

使用形式:str.strip(参数)

功能:判断字符串 str 中开头和结尾的字符是否与参数相同,若相同则删除与参数相同的字符。

a = "#张三工资3500李四工资3800王五工资3500##"

b = a.strip("#")

print(a)

输出为:

张三工资3500李四工资3800王五工资3500

如果结尾为##,则a.strip("#")只会删除最后的一个#,而不会删除前一个#

第 4 种,str.split () 方法

使用形式:str.split(参数)

功能:将字符串 str 在参数所指位置处进行分隔并组成一个列表

a = "#张三工资3500李四工资3800王五工资3500##"

b = a.strip("#")

print(b)

['张三工资3500','李四工资3800','王五工资3500']

第 5 种,str.join () 方法

使用形式:str.join(参数)

功能:在参数的每两个字符之间加入字符串 str

a = "工资:3500"

b=a.join("王李张孙钱")

print(b)

输出为:

王工资:3500李工资:3500张工资:3500孙工资:3500钱工资:3500

第 6 种,str.format () 方

使用形式:

"字符{}字符{}...".format(参数1, 参数2)

功能:字符串中的{}表示槽,槽用于替换format()括号中的参数(槽的个数要与参数的个数相匹配)。

a="张三工资: {}李四工资:{}".format(3500,3800)

print(a)

输出为:

张三工资:3500李四工资:3800

转义字符

在一段字符信息中,除了普通字符外,还有一类特殊字符,例如制表符、换行符、换页符、引号(Python 语言默认引号是字符串的标志,因此无法在字符串中直接使用引号)等。但这些特殊字符在生活中也常常被使用。 而这些具有特殊功能的字符信息无法直接通过字符来表示,因此在程序中使用\字符的形式来表示特殊字符。例如\n表示换行符(通过\将字符n原本的含义转换为换行),\t表示制表符(水平制表符,等效于按 Tab 键)。

例如图 2-43 所示的代码,字符串中存在转义字符\t\n,因此在输出时会分别将\t转换为制表符(默认为 4 个空格)和换行符。代码执行后的结果如图 2-43 所示的 Shell 界面的显示结果。

虽然\g、\h和\j并不是转义字符,但读者在编写代码的过程中为了避免字符被转义,字符\尽量使用\\、/或//来替换

2.3.2 检测数据类型

不同的数据都有各自的类型,可通过函数type(数据)来检测数据的类型。例如图 2-47 所示的代码,其中 a 为字符串类型数据,b 为整数类型数值,c 为小数类型(编程中的小数类型通常被称为浮点数类型)数值,d 为列表类型数据,代码执行结果为<class 'str'> <class 'int'> <class 'float'> <class 'list'>

使用函数转换数据类型不是改变原始数据的数据类型,而是将数据复制一份后再将其类型转换为新的数据类型,并赋值给对应变量。例如图2-48所示的a仍然是字符串,c仍然是浮点数。

2.4 输入函数 input ()

程序可以通过print()函数输出信息,也可以通过键盘输入信息到程序,使程序接收用户的信息并做出下一步处理。在 Python 语言中可以使用input()函数实现接收用户的信息。input()函数的使用形式如下:input(提示信息)

其中提示信息为函数的参数,数据类型为字符串类型。在执行代码后会首先将提示信息输出,用于提醒用户输入数据,接着等待用户通过键盘输入信息。用户输入完信息后按 Enter 键即可将信息传递给代码程序以继续执行。

3.1 条件判断语句

共3种语句:if、if+else、if+elif+else

3.1.1 if语句

功能介绍

程序顺序执行代码1,遇到条件表达式:

1. 条件满足:执行代码2,再执行代码3结束;

2. 条件不满足:跳过代码2,直接执行代码

3.结束。

语法格式 if 条件判断表达式:

使用4点注意

1. if是Python保留字;

2. 条件表达式可使用比较/判断语句;

3. 表达式末尾必须加冒号:;

4. 内部代码不能和if对齐,必须缩进(默认4个空格)。

7类条件判断表达式(A、B为数据)

1. A == B:相等返回True,不等返回False;

==是判断相等,=是赋值,二者含义不同

2. A > B:A大于B返回True,否则False

3. A >= B:A大于等于B返回True,否则False

4. A < B:A小于B返回True,否则False

5. A <= B:A小于等于B返回True,否则False

6. A != B:A不等于B返回True,相等返回False

7. 纯数值表达式:计算结果非0为True,等于0为False

示例代码1(等值判断)

print(1)

if 3 == 4:

print("代码2")

print("代码3")

代码运行结果

1

代码3

示例代码2(数值表达式判断)

print("代码1")

if 3+2 < 4*2:

print("代码2")

print("代码2+")

print("代码3")

代码运行结果

代码1

代码2

代码2+

代码3

配套注意 if语句后必须带冒号;内部代码必须缩进;缩进空格数统一即可,规范为4个空格。

3.1.2 布尔值

功能介绍 布尔值仅包含True、False两种,专门用来存储条件判断的结果;可直接赋值给变量,用于二元结果场景。

示例代码

print(3+2 < 4*2)

print(3+2 > 4*2)

代码运行结果

True

False

3.1.3 if+else语句

功能介绍

1. 条件满足:执行if内部代码块2,再执行后续代码4;

2. 条件不满足:执行else内部代码块3,再执行后续代码4; 二者一定会执行其中一个代码块;else是Python保留字。

语法格式

if 条件判断表达式:

代码块2

else:

代码块3

示例代码

(猜数字)

a = input("请在0~9中猜一个数字")

if a == "3":

print("恭喜,猜对了!")

else:

print("猜错了!")

(输入5时运行结果)

请在0~9中猜一个数字

5

猜错了!

配套注意

input()获取的数据默认是字符串类型,判断数字时比较值必须加引号。

3.1.4 if+elif+else语句

功能介绍

按从上到下顺序依次判断条件:

1. 满足条件1:执行if代码块2;

2. 不满足条件1、满足条件2:执行elif代码块3;

3. 全部条件都不满足:执行else代码块4;

只会执行其中一个代码块;

elif是Python保留字。

语法格式

if 条件判断表达式1:

代码块2

elif 条件判断表达式2:

代码块3

else:

代码块4

示例代码(年龄段基础判断)

a = int(input("请输入您的年龄:"))

if a < 10:

print("您是儿童")

elif a < 16:

print("您是少年")

else:

print("您比少年大")

输入23运行结果

请输入您的年龄:23

您比少年大

3.1.5 多个elif语句

功能介绍

可连续添加多个elif实现多区间判断,按从上至下顺序校验条件,匹配到即执行对应代码块;全部不匹配则执行else。

语法格式

if 条件判断表达式1:

代码块2

elif 条件判断表达式2:

代码块3

elif 条件判断表达式3:

代码块4 ...

else: 代码块n

示例代码(精细年龄段判断)

a = int(input("请输入您的年龄:"))

if a < 10:

print("您是儿童")

elif a < 16:

print("您是少年")

elif a < 30:

print("您是青年")

elif a < 59:

print("您是中年人")

else:

print("您是老年人")

输入79

运行结果

请输入您的年龄:79

您是老年人