在本篇文章当中,我们将讲解Python中程序的流程控制。首先我们可以了解程序的描述方式,主要包括自然语言(直接描述)、流程图(图形、流程线和文字描述)、伪代码(程序较小,用代码描述)。
再者是程序的组织结构:顺序结构、选择结构(分支结构)、循环结构。
目录
顺序结构
按程序语句的自然顺序,从上到下依次执行。
赋值语句的顺序则是从左到右,这也是相同优先级下的顺序。
选择结构
1、if语句
结构: if expression:
语句块
实际上if等一类的语句使用都是与C语言中对应的相通的,这里不再赘述语句的逻辑。最大的区别主要是Python代码使用缩进来区分结构,如上方的if语句,第二行就要比第一行向后一个缩进。当然,如果if语句块中只有一句代码,可以直接写在后面。
2、双分支结构
if expression:
else:
3、多分支结构
if 表达式1:
elif 表达式2: (这里是不同于C语言的 else if 的)
elif ......
else
选择结构十分灵活,可以嵌套使用。
模式匹配
虽然Python中没有Switch语句,但是在Python3.11版本后具有了新特性模式匹配。用到match语句,match score:case 'A': ... case 'B': ...。不需要break语句,对数据类型的判别也比较方便。以下为实例:
x=input('x:')
match x:
case '1':
print(1)
case '2':
print(2)
case '3':
print(3)
循环结构
1、for循环
for 循环变量 in 历边对象:
语句块
这一部分的逻辑相较C语言差别较大,首先此处的循环变量相当于直接创建一个变量,历边对象的类型也没有限制,且默认全部历边。我们先拿熟知的字符串举例:
for i in 'hello':
print(i)
# 输出结果为:
# h
# e
# l
# l
# o
同时要介绍range(n,m)函数,产生一个[n,m)序列,包含n但不包含m,可以方便的历边数字。
for i in range(1,11):
print(i)
# 结果将输出1到10的数字
2、for else循环
for 循环变量 in 历边对象:
语句块1
else:
语句块2
else后的只有在循环正常结束之后才执行,遇到break语句中止循环等情况都属于非正常结束。
3、无限循环while
while 表达式:
语句块
会直接无限次循环执行语句。
而同样也有while else 循环结构,在程序正常结束之后执行else后的语句。
图形打印实例
接下来我们使用已经掌握的知识编写一个打印菱形的程序。
row=eval(input('请输入菱形的行数:'))
while row % 2==0:
print('不能是偶数,重新输入:')
row=eval(input('请输入菱形的行数:'))
top_row=(row+1)//2 # 上部分菱形的行数
for i in range(1, top_row+1):
for j in range(1, top_row+1-i):
print(' ', end='')
# 打印空格,end=''是为了空格相连而不换行
for k in range(1, i*2):
print('*', end='')
# 打印*号
print() # 换行
bottom_row=row//2 # 下半部分的行数
for i in range(1, bottom_row+1):
for j in range(1, i+1):
print(' ', end='')
for k in range(1, 2*(bottom_row-i+1)):
print('*', end='')
print()
跳转语句和空语句
跳转语句主要有break语句和continue语句,他们的概念和C语言中的相同,break是中止一层的循环,continue是跳转到下一轮循环,无视当前轮次之后的语句。
在Python中还有一种空语句 pass ,这个语句并不会产生任何效果,但仍然是一句正确的代码,通常我们在需要运行某一部分代码,但不需要它产生任何实际影响的情况下使用。