顺序结构
一般的Python代码都是使用的顺序结构,顺序结构即从上往下依次执行代码。
graph LR
S(开始执行) --> E(结束执行)
代码示例:
print("Hello, World!")
def sayHi():
print('Hi')
sayHi()
分支结构
在Python中,判断(if、elif、else)与异常捕获(try、except、else、finally)都是用的分支结构,分支结构会根据具体情况选择不同的执行代码。
graph LR
S(开始执行) -->N1{情况1}--> E1(结束执行1)
S(开始执行) -->N2{情况2}--> E2(结束执行2)
S(开始执行) -->N3{情况3}--> E3(结束执行3)
单分支结构
if就是单分支结构。
graph LR
S(开始执行) -->N1{是否符合if情况}--是--> E1(执行if语句)
if 条件:
执行代码
代码示例:
if True:
print('Hello World')
双分支结构
if-else就是双分支结构。
graph LR
S(开始执行) -->N1{是否符合if情况}--是--> E1(执行if语句)
N1{是否符合if情况}--否--> E2(执行else语句)
if 条件:
执行代码
else:
执行代码
代码示例:
if 1+1==2:
print('一加一等于二')
else:
print('一加一不等于二')
同时,双分支结构还有一种紧凑格式:表达式1 if 条件 else 表达式2。条件成立则表达式1,条件不成立就表达式2。
代码示例:
print('一加一等于二') if 1+1==2 else print('一加一不等于二')
print('一加一等于二' if 1+1==2 else '一加一不等于二')
值得注意的是,赋值等语句不算是表达式,也就是说name = 'value1' if True else name='value2'语句是错误的写法(SyntaxError: cannot assign to conditional expression,语法错误:无法分配给条件表达式)。对于赋值,您可以使用name = 'value1' if True else 'value2'的方法使解释器把整个右值当作一个表达式。
多分支结构
if-elif、if-elif-else就是多分支结构。
graph LR
S(开始执行) -->N1{是否符合if情况}--是--> E1(执行if语句)
N1{是否符合if情况}--否--> N2(是否符合elif情况)--是-->E2(执行elif语句)
N2--否-->E3(执行else语句)
if 条件1:
执行代码
elif 条件2:
执行代码
else:
执行代码
代码示例:
if 1+1==1:
print('一加一等于一')
elif 1+1==2:
print('一加一等于二')
else:
print('一加一既不等于一也不等于二')
循环结构
在Python中,for循环(遍历循环)及while循环(条件循环)就是循环结构,循环结构会将某一段程序重复执行。
graph LR
S(开始执行) -->E(循环代码)-->E2{是否结束循环}
E2--是-->EE(结束执行)
E2--否-->E
for循环(遍历循环)
for 局部变量名 in 可迭代对象:
执行代码
代码示例:
nums = [0,1,2,3,4,5]
for num in nums:
print(num)
while循环(条件循环)
while 条件:
执行代码
代码示例:
while True:
print('无限循环!')
while 1+1==3:
print('看来一加一不等于三,所以无法输出...')
退出循环
continue:退出当次循环,进入到下次循环break:退出当前循环,执行下一段命令for-else与while-else:如果在循环体中未使用break,则会执行else语句(如下)
for i in range(5):
...
else:
print('没有用break')
for i in range(5):
break
else:
print('用了break')
(最终只打印“没有用break”)