Python-3.程序结构
砂糖桑
Aug 12, 2022
Last edited: 2022-8-14
type
Post
status
Published
date
Aug 12, 2022
slug
python-3
summary
和其他编程语言一样,Python程序的结构包括顺序、选择与循环结构。虽然不同语言的程序结构都是相通的,但是Python中还有很多自己的用法,比如for循环就和C++中for(;;)的用法差别较大(倒是比较像for(auto i:))。这些不同点需要重视。
tags
Python课堂笔记合集
category
Python
icon
password
Property
Aug 14, 2022 11:17 AM
本篇主要介绍Python程序的顺序结构与选择结构、循环结构的用法。顺序结构这里主要补充一些基础的知识,如格式化输出等,选择结构主要讲if语句,循环结构主要讲for语句和while语句。
顺序结构
和C程序的入口是main函数不同,Python是一种脚本语言。它从上到下执行各条语句,可以把在命令行中分开执行的语句整合到一个Python脚本中。
语句行
- Python命令行中的语句必须从解释器提示符的第一列开始,前面不能有空格,不然会报错。

- Python脚本中的每行代码也必须顶格(tab的除外),每个语句行以回车符结束。
- 可以在同一行中写多条语句,语句之间使用分号分隔。
- 如果一条语句写在一行太长,可以使用反斜杠\(续行符)换行。

- 如果在括号内需要换行,则不需要使用续行符,如
def func( ):return 120
就是一个正确的函数定义。
注释
Python中的注释包括单行注释和多行注释。
- 单行注释以#开头,后面的内容全是注释。
- 多行注释其实就是多行的字符串。它常常作为函数或类的说明,可以通过调用 函数名.__doc__ 来查看这个多行字符串说明。一般的编辑器也会将它作为函数或类的提示。而如果将多行注释放在脚本的地方,就会将它作为字符串输出。

- 多行注释也可以采用每行开始一个#的方式。2和3两种注释方式的适用场景不同。
- 注释的添加也需要遵守一定的规范:
- 一目了然的代码,不需要添加注释
- 一个代码可能不是那么一目了然,如链式赋值,则在行后添加注释#
- 一系列复杂的操作,应该在操作开始前写上相应的注释
赋值语句
- 使用=进行赋值。Python的赋值其实就是将变量指向解释器为相应值分配的空间。所以Python的赋值是动态的:①不需要声明变量类型 ②变量的类型随着值动态变化。
- 复合赋值。复合赋值运算符包括:+=、-=、*=、/=、//=、%=、**=、 <<=、>>=、&=、|=、^=。
- 多变量赋值。链式赋值的写法:var1=var2=var3=……=值。它的作用是为多个变量赋同一个值。这种赋值方式的优点是所有变量都指向同一个值(地址相同),这样可以减少空间的开销。

- 同步赋值。它的格式为var1,var2……=值1,值2……。赋值的规则是先计算出右边的值,再将右边的值从值1开始一一对应地赋值给左边的变量。这种赋值方式与按顺序拆分为多条简单的赋值语句不同:

标准输入
使用 input([提示字符串]) 的方式实现标准输入,它接收到用户来自键盘的输入后,以字符串的形式返回这个输入。

后续的处理有两种:
- 对返回的字符串进行强制类型转换
- 使用eval函数获取原生的输入

两种处理方式的区别是eval的适用面更广,如可以将一个表达式作为输入。
标准输出与格式化输出
标准输出使用到的函数为print()。它的格式为 print(输出项1,输出项2,……,sep=[分隔符],end=[结束符])
- 输出项可以是变量,也可以是数字、字符串甚至表达式。
- 分隔符就是各输出项之间分隔的符号。默认的分隔符是空格。
- 结束符就是输出结束的符号。默认的结束符是回车。

print可以实现要求比较低的格式化,但是格式化要求比较高的时候,就要使用专门的格式化输出。
- 使用字符串格式化运算符%
- 使用%分隔格式字符串与输出项,格式为格式字符串%(输出项1,输出项2……)。
- 格式字符串由普通字符和格式说明符组成,类似于C语言printf函数的格式控制字符串。
- 格式说明符以%开头,后面接格式标识符。常用的有%s、%d、%o、%x、%f。一般情况下,若无特殊要求,使用%s即可。
- 另外一种格式是当输出项为字典时,在格式说明符那里指定键,如’%(键2)s:%(键1)d‘%dict。
这是比较旧的格式化输出方式,一方面用的人还比较多,另一方面正在逐渐被淘汰。不建议使用,但需要明白用法。

- 使用format()内置函数
- 格式字符有d、b、o、x、f、c等,与格式化运算符的格式说明符相对应。之所以说是字符串是因为可以添加修饰,如’6.2f’表示6位有效数字且小数位数为2的浮点数。
format函数的作用是将一个单独的输出项进行格式化,返回一个格式化后的字符或字符串。它的格式为 format(输出项,格式字符串)

- 使用字符串的format()方法
- 格式字符串中的{}表示一个槽位置,用于填充输出项的值。从左到右一一匹配。
- {}中可以增加控制,格式为{序号:格式说明符}。序号表示匹配输出项的第几个,从0开始计数。格式说明符就是d、b、o、x、f、c等。
基本格式为格式字符串.format(输出项1,输出项2……)。

选择结构
Python使用if语句来实现分支结构。包括单分支if、双分支if…else…、多分支if…elif…elif…else。基本格式为:
if 表达式1: 语句块1 elif 表达式2: 语句块2 elif 表达式3: 语句块3 else: 语句块
要实现分支,就要判断表达式是否成立。表达式中的运算可以是关系运算、逻辑运算和测试运算。
关系运算
使用关系运算符<、<=、>、>=、==、!=。关系运算的结果是一个逻辑值True或False。
逻辑运算
使用逻辑运算符and、or、not对关系运算的结果进行逻辑运算。需要注意与或非三个运算的优先级:非>与>或。这个很容易忽略,所以该加括号时就要加括号!

测试运算
- 成员测试
使用成员运算符in和not in。前者是一个具体的值,后者是一个数组。
- 身份测试
使用身份运算符is和 is not。它用于测试两个变量是否指向同一个对象(区别=和!=)
如果if后面的语句比较少,也可以写在一行。格式为 if [表达式]:[语句行]。语句行可以用;将多条语句隔开:

循环结构
Python中的循环包括for循环与while循环。相比而言for循环比while循环更智能。
while循环
- 基本格式
while循环的格式为:
while [表达式]: [语句块]
当表达式的结果为True时,执行下面的语句块(循环体)。需要注意的是语句块中一般有修改表达式值的语句,让循环结束,避免无限循环。
当循环体比较小时,也可以使用语句行的格式写在一行:
while [表达式]:[语句行]。- 使用else子句
和C++不同,Python在循环中也可以使用else语句,它的作用是当循环正常执行完(包括没有执行)而不是break退出时执行else中的语句块。

- 使用range对象
range()函数的格式为 range([start],[end],[step])。可以将range的结果看成一个序列,如果i的值在序列内,则执行循环体。i的值需要在循环体中改变,避免无限循环:

for循环
- for循环是通过遍历序列中的元素来建立循环的。for循环会自动将序列中的元素依次赋值给循环变量。
- 这里的“序列”可以是列表、元组、字符串、集合。遍历列表、元组和字符串的顺序都是从左往右,而遍历集合的顺序是无序的。
- 循环的次数就是序列中的元素个数。所以可以通过改变序列的元素个数来控制循环的次数。
- for循环也可以使用else子句。
- for循环的序列也可以是range对象。和while循环中使用range不同,不管i之前的值如何,for循环的操作是先获得可迭代对象的迭代器,然后依次将next([迭代器])的值赋值给循环变量。

从range这里可以对比出for循环和while循环的区别——for循环更加智能,它会自动完成赋值;而while循环需要手动赋值。
循环控制语句
循环控制语句包括常用的break、continue、pass。
- break终止所在循环,执行循环体后面的语句。
- continue提前结束本次循环,重新开始下一轮循环。
- pass语句是Python中新引入的语句,它的作用是占位。因为Python和C语言不一样,循环体不能什么都不写,不然编辑器就会报错。所以就要用pass占位,之后再在循环体中添加内容。
- Catalog
- About
0%
