
2.2 Python基础语法
2.2.1 基础语法:行与缩进
Python使用空格来组织代码,而且一般使用4个空格(英文状态),但R、C++、Java和Perl等其他语言使用的是括号。例如,使用for循环计算1到100所有整数的和,代码如下:

代码输出结果如下所示。

注意:Python中的缩进空格数是可变的,但是在同一个代码块中必须包含相同数量的缩进空格。
在Python中,通常一行只编写一条语句,如果编写多条语句就需要使用分号(;)分隔。此外,如果语句很长,还可以使用反斜杠(\)来实现换行,但是在[]、{}或()中的多行语句不需要使用反斜杠,示例代码如下:

2.2.2 条件语句:if及if嵌套
我们在前文看到的代码都是按照顺序执行的,也就是先执行第1条语句,然后是第2条语句、第3条语句……一直到最后一条语句,这被称为顺序结构。
但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄偏小没有权限使用。这时程序就需要做出判断,看用户是否是成年人,并给出提示。
在Python中,可以使用if…else语句对条件进行判断,然后根据不同的结果执行不同的代码,这被称为选择结构或分支结构。
Python中的if…else语句可以细分为以下3种形式,分别是if语句、if…else语句和if嵌套语句,它们的执行流程如图2-2至图2-4所示。

图2-2 if语句的执行流程

图2-3 if…else语句的执行流程

图2-4 if嵌套语句的执行流程
例如,在考试中,通常会将成绩划分为几个等级,这里就可以使用if嵌套语句实现,代码如下:

代码输出结果如下所示。

当然这个需求还有很多可以实现的方法,这里就不再逐一列举了。
2.2.3 循环语句:while与for
在Python中,while循环语句和if条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while就会一直重复执行代码块。
while循环语句的语法格式如下:

这里的“代码块”指的是缩进格式相同的多行代码,不过在循环结构中,它又被称为循环体。while循环语句执行的具体流程为:先判断条件表达式的值,如果其值为真(True),则执行代码块中的语句,当执行完毕后,再重新判断条件表达式的值是否为真(True),若仍为真(True),则继续重新执行代码块中的语句,如此循环,直到条件表达式的值为假(False),才终止循环。while循环语句的流程图如图2-5所示。

图2-5 while循环语句的流程图
在Python中,for循环语句使用得比较频繁,常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
for循环语句的语法格式如下:

其中,“迭代变量”用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中对迭代变量手动赋值,“代码块”指的是具有相同缩进格式的多行代码(和while循环语句一样),由于和循环结构联用,因此又被称为循环体。for循环语句的流程图如图2-6所示。

图2-6 for循环语句的流程图
下面介绍使用while循环语句输出九九乘法表,代码如下:

运行上述代码,输出结果如下所示。

也可以使用for循环语句输出九九乘法表,代码如下:

当然,九九乘法表还有很多实现方法,这里就不再进行详细阐述了。
2.2.4 格式化:format()函数
在Python中,对字符串进行格式化有format()函数和%两种方法。其中,format()函数是Python 2.6版本新增的一种格式化字符串函数,与之前的%格式化相比,优势比较明显,下面重点讲解一下format()函数及其使用方法。
1.利用f-string进行格式化
Python 3.6版本加入了一个新特性,即f-strings,可以直接在字符串的前面加上f来格式化字符串。例如,输出“2020年10月华东地区的销售额是61.58万元。”的代码如下:

代码输出结果如下所示。
2020年10月华东地区的销售额是61.58万元。
2.利用位置进行格式化
可以通过索引直接使用*号将列表打散,再通过索引取值。例如,输出“2020年10月华东地区的销售额是61.58万元,利润额是3.01万元。”的代码如下:

代码输出结果如下所示。
2020年10月华东地区的销售额是61.58万元,利润额是3.01万元。
3.利用关键字进行格式化
也可以通过**号将字典打散,通过键key来取值。例如,输出“2020年10月华东地区的销售额是61.58万元,利润额是3.01万元。”的代码如下:

代码输出结果如下所示。
2020年10月华东地区的销售额是61.58万元,利润额是3.01万元。
4.利用下标进行格式化
还可以利用下标+ 索引的方法进行格式化。例如,输出“2020年10月华东地区销售额是61.58万元,利润额是3.01万元。”的代码如下:

代码输出结果如下所示。
2020年10月华东地区销售额是61.58万元,利润额是3.01万元。
5.利用精度与类型进行格式化
精度与类型可以一起使用,格式为{ :.nf} .format(数字),其中“.n”表示保留n位小数,对于整数直接保留固定位数的小数位。例如,输出3.1416和26.00的代码如下:

代码输出结果如下所示。

6.利用千分位分隔符进行格式化
"{:,}".format()函数中的冒号加逗号,表示可以将一个数字每三位用逗号进行分隔。例如,输出“123,456,789”的代码如下:

代码输出结果如下所示。
