![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=1739329561-iVHpYdpimKakzacspRj2Ubp1EGPe5xBl-0-bff32e694b406bca4826dc999b31cd9f)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_102.jpg?sign=1739329561-1bu8ieRoeGZDexgPTIzpuE86MtI0rUKE-0-199cc3dd3d13e00b566763861fe74ce5)
注意:Python中的缩进空格数是可变的,但是在同一个代码块中必须包含相同数量的缩进空格。
在Python中,通常一行只编写一条语句,如果编写多条语句就需要使用分号(;)分隔。此外,如果语句很长,还可以使用反斜杠(\)来实现换行,但是在[]、{}或()中的多行语句不需要使用反斜杠,示例代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_103.jpg?sign=1739329561-tjzOyf5PxHyF0qzVlmwbPlc86581oEml-0-f6db6faaa9a243f13f1f3baa9b5584d7)
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=1739329561-CYmoJ99VsbSYc0IzrL99TyFfwEol73ms-0-a345cb1df381dfa67f09d558cdb81cbd)
图2-2 if语句的执行流程
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_105.jpg?sign=1739329561-Fnf0p26ZLzjylNxf9J4kRRxAjK4BlWYv-0-f00838e01f58096a89df11646c2dcb13)
图2-3 if…else语句的执行流程
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_106.jpg?sign=1739329561-o9OZBZLiWBO6kNL2jnwsyQl0sUx3L8Cz-0-d4dfdeff7ef41ecbd98186b675f666b2)
图2-4 if嵌套语句的执行流程
例如,在考试中,通常会将成绩划分为几个等级,这里就可以使用if嵌套语句实现,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_107.jpg?sign=1739329561-SDjSVaBoKy5A5waNg12qsc0lEsSHCR57-0-912f55a6bf2b2e237a119881d283767a)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_108.jpg?sign=1739329561-8vcnvF1WmaKK04nsLgxnWxQ6Sc3ri8QV-0-e787865d579de42b76499c2d513c1c8d)
当然这个需求还有很多可以实现的方法,这里就不再逐一列举了。
2.2.3 循环语句:while与for
在Python中,while循环语句和if条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while就会一直重复执行代码块。
while循环语句的语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_109.jpg?sign=1739329561-1sEVGyO3qZaEqbWoYYyZMr4ksVnYkafG-0-ecc19723271fe3e0a55d9d64668d008a)
这里的“代码块”指的是缩进格式相同的多行代码,不过在循环结构中,它又被称为循环体。while循环语句执行的具体流程为:先判断条件表达式的值,如果其值为真(True),则执行代码块中的语句,当执行完毕后,再重新判断条件表达式的值是否为真(True),若仍为真(True),则继续重新执行代码块中的语句,如此循环,直到条件表达式的值为假(False),才终止循环。while循环语句的流程图如图2-5所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_110.jpg?sign=1739329561-wixbypaEpqitOBMV1iTGOYv6BWyDjlAn-0-2d2f04378228c980fd74332365ae14b4)
图2-5 while循环语句的流程图
在Python中,for循环语句使用得比较频繁,常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
for循环语句的语法格式如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_111.jpg?sign=1739329561-Gr47ROl1nUL5oeqe4flPFPaejITwzgKr-0-6805f1996232b40272401426b605f965)
其中,“迭代变量”用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中对迭代变量手动赋值,“代码块”指的是具有相同缩进格式的多行代码(和while循环语句一样),由于和循环结构联用,因此又被称为循环体。for循环语句的流程图如图2-6所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_112.jpg?sign=1739329561-AWOIc3lHD0fxDfodiD5mfbqN8KTQyC7R-0-f0d8295db4c6d00c00957d06a2998792)
图2-6 for循环语句的流程图
下面介绍使用while循环语句输出九九乘法表,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_113.jpg?sign=1739329561-nfX3dL2LqeeAW7fSZXGstEY2uoXhqWXD-0-1935381f490b4ff8fc98bc9f3f395c14)
运行上述代码,输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_114.jpg?sign=1739329561-iucjvmX17nSGOjfrISQcUbQZNej1a7Ar-0-c603f8bb5ebd9c04c8994749ea5d3996)
也可以使用for循环语句输出九九乘法表,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_115.jpg?sign=1739329561-zdRdHJt0SB8zm8BpdEgTZI1CbO9WYkOQ-0-1c8623fa3f02ec7cfefedb97deaa6b36)
当然,九九乘法表还有很多实现方法,这里就不再进行详细阐述了。
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=1739329561-pvYGkJJE3IcZyYyJ1MBYImxCWJ3nVhaO-0-10532279cc2b30067d585e4d9bca3803)
代码输出结果如下所示。
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=1739329561-Un46OglPjCvKCKcG9X1jqeWvHrLLSeNY-0-78ae1bb7ceceb14584a0984ac8143de0)
代码输出结果如下所示。
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=1739329561-xZCrrFMdVoUX8IQxrGGzqYbq9vCMo7bo-0-5b825342effb0bb807249ad08b1e2e0f)
代码输出结果如下所示。
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=1739329561-jUwtFXcUE390Q8Z1ZmkquMO9mdyYw9ru-0-ca8602d6fa9c457b1bdcf7a0fe4deae2)
代码输出结果如下所示。
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=1739329561-36moC9ofBQZXuOkTzSNGe6pQBQvw6hgE-0-a3fcb8974deb9af187d982d306c79a64)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_121.jpg?sign=1739329561-0ZqMkJ5HixHuNZJ0U8mfbkYEGAV02q4y-0-e7fb7618b51ad7d6bd228921092db56f)
6.利用千分位分隔符进行格式化
"{:,}".format()函数中的冒号加逗号,表示可以将一个数字每三位用逗号进行分隔。例如,输出“123,456,789”的代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_122.jpg?sign=1739329561-blYvmgP5D115efua4OBlMG0fff46sOGv-0-97fbf5d50f343da4f6da8f0744c18c65)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt003_123.jpg?sign=1739329561-xwpsNXmq2t0m8sLikBCEXbhkfEuloyOO-0-40a6e559313e6d30f3e2b7464f0f2e6f)