![Python+Office:轻松实现Python办公自动化](https://wfqqreader-1252317822.image.myqcloud.com/cover/834/40107834/b_40107834.jpg)
2.2 Python基础语法
2.2.1 基础语法:行与缩进
Python使用空格来组织代码,而且一般使用4个空格(英文状态),但R、C++、Java和Perl等其他语言使用的是括号。例如,使用for循环计算1到100所有整数的和,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_101.jpg?sign=1739162534-Sape3dKjMgjiWKttGuFiApCz2dKAI4jP-0-341418ab5e6c0ca5d1690936aef0185b)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_102.jpg?sign=1739162534-WP34THt1c8vYy67lPVThweNmzkFRze4d-0-6671eebb74ee8d5387e56deccbc50a3e)
注意:Python中的缩进空格数是可变的,但是在同一个代码块中必须包含相同数量的缩进空格。
在Python中,通常一行只编写一条语句,如果编写多条语句就需要使用分号(;)分隔。此外,如果语句很长,还可以使用反斜杠(\)来实现换行,但是在[]、{}或()中的多行语句不需要使用反斜杠,示例代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_103.jpg?sign=1739162534-1HdaAc9BPM6xDZ6DPTATPrhhmemWUmKm-0-4e24da3045153ba2ef589172fd40ca02)
2.2.2 条件语句:if及if嵌套
我们在前文看到的代码都是按照顺序执行的,也就是先执行第1条语句,然后是第2条语句、第3条语句……一直到最后一条语句,这被称为顺序结构。
但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄偏小没有权限使用。这时程序就需要做出判断,看用户是否是成年人,并给出提示。
在Python中,可以使用if…else语句对条件进行判断,然后根据不同的结果执行不同的代码,这被称为选择结构或分支结构。
Python中的if…else语句可以细分为以下3种形式,分别是if语句、if…else语句和if嵌套语句,它们的执行流程如图2-2至图2-4所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_104.jpg?sign=1739162534-AEG8jKQ3KqpUHIe5ljJGyRPluFRe9Hwr-0-b613e5c1f191f482c1bb727388d1d404)
图2-2 if语句的执行流程
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_105.jpg?sign=1739162534-Z8bXjqwFzcYgRbdtU01uMdHNR6sVdCgF-0-e65fefa2f075915b60537496876d6633)
图2-3 if…else语句的执行流程
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_106.jpg?sign=1739162534-9RQRAndsq3qPDrXNJQie5CuiQ1PKBDuf-0-490c7093b65405640b5465c00fa2c814)
图2-4 if嵌套语句的执行流程
例如,在考试中,通常会将成绩划分为几个等级,这里就可以使用if嵌套语句实现,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_107.jpg?sign=1739162534-KPcbF90KlosikNc9Pyx0fFWnJpHOZo4i-0-f98c46aa7bb5ab7fb63bcd7a6d73a525)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_108.jpg?sign=1739162534-1tbYhnojbCWTqRdrx6HblR10qpHsrbYL-0-2175486265d48fd7b3047c6c174f8dc5)
当然这个需求还有很多可以实现的方法,这里就不再逐一列举了。
2.2.3 循环语句:while与for
在Python中,while循环语句和if条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while就会一直重复执行代码块。
while循环语句的语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_109.jpg?sign=1739162534-2estS3sge8u1KNQ5c4hqsihzGG2lU6DK-0-2b12bce8b53c1eaf8de60674aabb31a1)
这里的“代码块”指的是缩进格式相同的多行代码,不过在循环结构中,它又被称为循环体。while循环语句执行的具体流程为:先判断条件表达式的值,如果其值为真(True),则执行代码块中的语句,当执行完毕后,再重新判断条件表达式的值是否为真(True),若仍为真(True),则继续重新执行代码块中的语句,如此循环,直到条件表达式的值为假(False),才终止循环。while循环语句的流程图如图2-5所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_110.jpg?sign=1739162534-Kk4VKJvkRrsyk3qmaRWZV5cwA0dsPrBJ-0-200d2a064d197103added7c92eba082c)
图2-5 while循环语句的流程图
在Python中,for循环语句使用得比较频繁,常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
for循环语句的语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_111.jpg?sign=1739162534-EoJDbyirh3H7PGZaVIx2Zle8HUa6GIXo-0-be1afbcde9123f36653fe69984739f33)
其中,“迭代变量”用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中对迭代变量手动赋值,“代码块”指的是具有相同缩进格式的多行代码(和while循环语句一样),由于和循环结构联用,因此又被称为循环体。for循环语句的流程图如图2-6所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_112.jpg?sign=1739162534-77FKnY2EWu5VNApx2o2NxLntGWzHXbVM-0-a13694b9f064089860c5128b4e9ad4fd)
图2-6 for循环语句的流程图
下面介绍使用while循环语句输出九九乘法表,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_113.jpg?sign=1739162534-HOGKCl0yEeNxBY9KQtNYRSsupIKhANSI-0-9b1259e470691f8d3fcf07a68b6a9105)
运行上述代码,输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_114.jpg?sign=1739162534-GwQ27jjsl28Xjl1Tt0F6YgY1QKdD0Luq-0-1052506c322d20587181160ac9f2f9af)
也可以使用for循环语句输出九九乘法表,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_115.jpg?sign=1739162534-PtzM7Fj3iFSEcZasuD3rC5yFbMhK0hgz-0-830c0d4d16c4d0de3560ba4c660ce93f)
当然,九九乘法表还有很多实现方法,这里就不再进行详细阐述了。
2.2.4 格式化:format()函数
在Python中,对字符串进行格式化有format()函数和%两种方法。其中,format()函数是Python 2.6版本新增的一种格式化字符串函数,与之前的%格式化相比,优势比较明显,下面重点讲解一下format()函数及其使用方法。
1.利用f-string进行格式化
Python 3.6版本加入了一个新特性,即f-strings,可以直接在字符串的前面加上f来格式化字符串。例如,输出“2020年10月华东地区的销售额是61.58万元。”的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_116.jpg?sign=1739162534-8hOSrgLnjh6WrPlja3SYE6K3qEQzLBQm-0-e8f8d509de775d24841e619efa7dc770)
代码输出结果如下所示。
2020年10月华东地区的销售额是61.58万元。
2.利用位置进行格式化
可以通过索引直接使用*号将列表打散,再通过索引取值。例如,输出“2020年10月华东地区的销售额是61.58万元,利润额是3.01万元。”的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_117.jpg?sign=1739162534-LSRGlovYO3rspSvXBdLNKZP78kHYrKu1-0-3e813c94f639bdbbb66390c4770ee2ba)
代码输出结果如下所示。
2020年10月华东地区的销售额是61.58万元,利润额是3.01万元。
3.利用关键字进行格式化
也可以通过**号将字典打散,通过键key来取值。例如,输出“2020年10月华东地区的销售额是61.58万元,利润额是3.01万元。”的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_118.jpg?sign=1739162534-wbnSEigOlr1xlT6uhcvH3sUq1BDvrcgx-0-75e16a7d19ea06b5b8ee2f5d2b2271ac)
代码输出结果如下所示。
2020年10月华东地区的销售额是61.58万元,利润额是3.01万元。
4.利用下标进行格式化
还可以利用下标+ 索引的方法进行格式化。例如,输出“2020年10月华东地区销售额是61.58万元,利润额是3.01万元。”的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_119.jpg?sign=1739162534-0gQxGuQwr5l6zgY9ED6s7p0GAvTFVj8W-0-b9d5cb6e240b56ebb81b3302b234b33b)
代码输出结果如下所示。
2020年10月华东地区销售额是61.58万元,利润额是3.01万元。
5.利用精度与类型进行格式化
精度与类型可以一起使用,格式为{ :.nf} .format(数字),其中“.n”表示保留n位小数,对于整数直接保留固定位数的小数位。例如,输出3.1416和26.00的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_120.jpg?sign=1739162534-OCHWzsqRLqsEzi5tdC6TE0pNCFJ0vgiR-0-8aa9ce12d9f3a237736f4e6ce7493aa1)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_121.jpg?sign=1739162534-a886eD5odf7ebL1y13zQoG5RYexxk87o-0-1765f78e52a8191cd477ebc78d1da35c)
6.利用千分位分隔符进行格式化
"{:,}".format()函数中的冒号加逗号,表示可以将一个数字每三位用逗号进行分隔。例如,输出“123,456,789”的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_122.jpg?sign=1739162534-BgBmvS39shxrGHoFDOWf2vQJxBoj9W7a-0-b07a650f1b630868898adb64b4a4c352)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_123.jpg?sign=1739162534-Tk6toDevnfKYTNB0KBHYs91gKzSYZhQp-0-461e15824fd2d1fe2b2b48c741c6e2dc)