编写Python程序之前,还需要对基础语法有所了解,这样才能编写出比较规范的程序。本节介绍Python的基础语法,包括代码行与缩进、条件语句、循环语句、格式化语句等。
Python使用空格来组织代码块及其层级关系,而且一般使用4个半角空格(即西文空格),这不像R、C++、Java和Perl等其他编程语言使用括号来组织代码区及其层级关系。例如,使用for循环求1~100所有数的和,示例代码如下:
运行上述代码,在下方会输出运算结果为5050。注意,Python中的缩进空格数是可变的,但是在同一个代码块中必须包含相同数量的缩进空格。
在Python中,通常是一行写完一条语句,如果要写多条语句,就需要使用分号分隔。此外,如果语句很长,则可以使用反斜杠(\)来实现换行,但是在包含[]、{}或()中的多行语句中不需要使用反斜杠,示例代码如下:
前面我们看到的代码都是顺序执行的,也就是先执行第1条语句,然后是第2条、第3条……一直到最后一条语句,这种程序流程的基本结构被称为顺序结构。
但是在很多情况下,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够,没有权限使用。这时程序就需要做出判断,看用户是否是成年人,并给出提示。
在Python中,可以使用if else语句对条件进行判断,然后根据不同的结果执行不同的代码,这种程序流程的基本结构被称为选择结构或者分支结构。
Python中的if else语句可以细分为3种形式,分别是if语句、if else语句和if嵌套语句,它们的执行流程如图2-2~图2-4所示。
例如在统计考试成绩时,一般会对成绩分等级,那么可以使用if嵌套语句来实现,示例代码如下:
运行上述代码,输出为“良好”,当然还有很多实现方法,这里就不再逐一列出了。
图2-2 if语句的流程图
图2-3 if else语句的流程图
图2-4 if嵌套语句的流程图
在Python中,while循环和if条件分支语句类似,即在条件(表达式)为真(True)的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while就会一直重复执行代码块。
while语句的语法格式如下:
while条件表达式: 代码块
这里的代码块指的是缩进格式相同的多行代码,不过在循环结构中,它又称为循环体。while语句执行的具体流程为:首先判断条件表达式的值,其值为真(True)时,则执行代码块中的语句,当执行完毕后,再回过头来重新判断条件表达式的值是否为真,若仍为真,则继续重复执行循环体内的代码块……,直到条件表达式的值为假(False),才终止循环。while循环语句的流程图如图2-5所示。
在Python中,for循环的使用比较频繁,常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。
for循环的语法格式如下:
for 迭代变量 in 变量: 代码块
其中,迭代变量用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中手动给迭代变量赋值,“代码块”指的是具有相同缩进格式的多行代码(和while一样),由于和循环结构联用,因此又称为循环体。for循环语句的流程图如图2-6所示。
图2-5 while循环语句的流程图
图2-6 for循环语句的流程图
使用while循环输出九九乘法表的代码如下:
运行上述代码,输出如下:
也可以使用for循环输出九九乘法表,代码如下:
当然,九九乘法表还有很多实现方法,这里就不再详细阐述了。
目前Python中字符串的格式化有format和%两种。其中format()是Python 2.6新增的一种格式化字符串函数,与之前的%格式化字符串相比,优势比较明显。下面重点讲解format()函数及其使用方法。
1.利用f-string格式化
在Python 3.6中加入了一个新特性:f-strings,其表示可以直接在字符串的前面加上f来格式化字符串。例如,输出“2020年12月华东地区的销售额是99.68万元。”的代码如下:
region = '华东' sales = 99.68 s = f'2020年12月{region}地区的销售额是{sales}万元。' print(s)
2.利用位置格式化
可以通过索引直接使用“*”将列表打散,通过索引来取值。例如,输出“2020年12月华东地区的销售额是99.68万元,利润额是3.01万元。”的代码如下:
sales = ['华东',99.68,3.01] s = '2020年12月{0}地区的销售额是{1}万元,利润额是{2}万元。'.format(*sales) print(s)
3.利用关键字格式化
也可以通过“**”将字典打散,通过键(Key)来取值(Value)。例如,输出“2020年12月华东地区的销售额是99.68万元,利润额是3.01万元。”的代码如下:
4.利用对象属性格式化
在类中,可以自定义__str__方法来实现特定的输出。例如,输出“姓名:王海,年龄:26岁”的代码如下:
5.利用下标格式化
还可以利用下标+索引的方法进行格式化。例如,输出“2020年12月份华东地区销售额是99.68万元,利润额是3.01万元。”的代码如下:
sales = ['华东',99.68,3.01] s = '2020年12月份{0[0]}地区销售额是{0[1]}万元,利润额是{0[2]}万元。'.format(sales) print(s)
6.利用填充与对齐格式化
填充与对齐的方法与Excel中的基本类似,通常填充与对齐一起使用。其中,>、^、<分别表示右对齐、居中、左对齐,后面的数值表示宽度,“:”后面(默认是空格)表示填充的字符,只能是一个字符。例如,对数值19进行填充与对齐,代码如下:
运行上述代码,输出如下:
其中符号后面的数值10表示总共有多少位字符,s1用空格填充左边的空格,s2用0填充左边的空格,s3用0填充左右两边的空格,s4用“*”填充右边的空格。
7.利用精度与类型格式化
精度与类型可以一起使用,格式为{ :.nf} .format(数字),其中.n表示保留n位小数,对于整数直接保留固定位数的小数位。例如,输出3.1416和26.00的代码如下:
8.利用千分位分隔符格式化
"{:,}".format()中的冒号加逗号表示可以将一个数字每三位用逗号进行分隔,例如输出“123,456,789”的代码如下:
print("{:,}".format(123456789))
此外,目前%格式化字符串相对来说使用较少,例如输出“Hello World!”的代码如下:
print('%s' % 'Hello World!')