(二)、程序流程控制

目录

一、顺序结构

二、分支结构(选择结构)

1.单分支结构

2.双分支结构

3.多分支语句

4.if语句的嵌套

三、循环结构

1.for循环

2.while循环

3.循环嵌套

四、break和continue

1.break语句

2.continue语句


在Python里,在处理一些工程的时候,需要在程序内部进行诸如判断、循环之类的处理。在这种情况下有的时候需要进行不止一次的“控制结构”,即有的时候要用到所谓的“嵌套”结构。有的时候嵌套会存在单一嵌套和多维嵌套等。

在程序流程控制中,我们难免会使用到条件语句,也就是条件表达式,在(一)程序设计基础中,“比较运算符”中介绍。

程序流程结构可以分为以下几种:

  1. 顺序结构:程序按照代码书写的顺序依次执行。

  2. 分支结构:根据条件来执行不同的代码块,包括if语句和else语句等。

  3. 循环结构:重复执行某一段代码,包括for循环和while循环。

  4. 跳转结构:用于跳出某一层循环或者函数返回值,包括break、continue以及return。

一、顺序结构

顺序结构是一种程序控制结构,指程序执行时按照代码所写的顺序,依次执行每个语句或表达式。

在顺序结构中,每一条语句都必须按照特定的顺序执行,直到执行完所有的语句为止。

在 Python 中,程序默认从上到下依次执行每条语句,如果要让程序按照特定的顺序执行语句,只需要按照需要的顺序编写代码即可。

顺序结构不仅简单易懂,而且通常执行效率高,但它无法实现程序中复杂的控制逻辑,例如循环、条件判断等。

在实际开发中,顺序结构需要与其他类型的结构(例如选择结构和循环结构)配合使用,以实现更加复杂的程序功能。

二、分支结构(选择结构)

分支结构(选择结构)是一种用于判断选择的结构类型。

一般包括三个语句“if”、“else”、“elif”。

可以分为三种结构:单分支结构,双分支结构,多分支结构。

1.单分支结构

单分支结构依托一个if 语句来实现。

if 语句用来判断一个条件是否成立,如果成立则执行相应的代码块。if 语句的语法格式如下:

if 判断条件:
    执行语句块

 例如:

num = 10
if num > 0:
    print("num大于0")

上面的代码中,如果num变量的值大于0,则打印"num大于0"。这里if语句后面的条件判断为num > 0,如果该条件成立,则会执行缩进的print语句。如果条件不成立,则该语句块不会执行。

2.双分支结构

双分支结构依托if-else语句实现,根据条件满足与否执行不同的代码块。

if 判断条件:
    执行语句块1
else:
    执行语句块2

上面的代码中,如果满足if的条件,则打执行语句块1;否则执行语句块2。if-else语句后面的代码块必须缩进,以表示其属于if或else语句的代码块。

需要注意的是,if和else语句中只有一个会被执行,取决于条件的结果。这种结构也可以称为二选一结构,因为只能在两个可能的结果中选择一个结果。

例如:

num = 10
if num > 0:
    print("num大于0")
else:
    print("num小于等于0")

上面的代码中,如果变量num的值大于0,则打印"num大于0";否则打印"num小于等于0"。if-else语句后面的代码块必须缩进,以表示其属于if或else语句的代码块。

3.多分支语句

多分支语句依托if-elif-else语句实现,可以用来判断多个条件,并根据不同的条件执行不同的代码块。

if 判断条件1:
    执行语句块1
elif 判断条件2:
    执行语句块2
elif 判断条件3:
    执行语句块3
...
else:
    执行语句块n

上面的代码中,如果判断条件1成立,则执行语句块1;如果判断条件1不成立,判断条件2是否成立,如果成立则执行语句块2;以此类推,直到最后一个条件,如果所有条件都不成立,则执行语句块n。

请注意,在多分支结构中,if 和 elif 语句后面的代码块分别在满足对应的条件时执行,但是该语句中只有一个会被执行,取决于条件的结果。如果所有条件都不满足,将执行 else 语句后面的代码块(如果有)。

例如:

score = 90
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'E'
print("您的成绩等级为:", grade)

在这个程序中,变量的值为90。程序使用if和 elif语句来检查此值是否大于或等于90、80、70 或 60。只有第一个匹配的条件会被执行,因此在这个程序中,执行的是第一个 if 语句。如果变量的值为80,那么程序将会执行 elif score >= 80 条件对应的代码块,打印出"B"。

4.if语句的嵌套

嵌套 if 语句是指在 if 语句中嵌套另外的 if 语句(可以不止一个,可以多层嵌套),用于更复杂的条件判断,如下介绍最简单的双层嵌套。

if 判断条件1:
    执行语句块1
    if 判断条件2:
        执行语句块2
    else:
        执行语句块3
else:
    执行语句块4

其中,如果判断条件1成立,则执行语句块1,并判断判断条件2是否成立,如果成立则执行语句块2,否则执行语句块3;如果判断条件1不成立,则执行语句块4。

例如:

x = 10
y = 5
z = 3

if x > y:
    if x > z:
        print("x 是三个数中最大的数")
    else:
        print("z 是三个数中最大的数")
else:
    if y > z:
        print("y 是三个数中最大的数")
    else:
        print("z 是三个数中最大的数")

在这个示例程序中,我们比较了三个变量 x、y 和 z 的值,并找出了它们中的最大值。首先,第一个if语句检查x是否大于y,如果是,则进入内部if语句。内部if语句再次检查x是否大于z,如果是,则打印出"x 是三个数中最大的数"。否则,内部else语句打印出"z 是三个数中最大的数"。如果第一个if语句不成立,则执行外部else语句,该语句中的 if-else 语句检查 y 和 z 的大小。如果 y 大于 z,则打印出"y 是三个数中最大的数",否则打印出"z 是三个数中最大的数"。

值得注意的是,Python 中的分之语句需要一定要缩进正确,以确保代码块的层次结构正确。这在编写复杂的代码时尤其重要。

注:

if 1<=a<=3

相当于if a in range(1,4)

三、循环结构

在Python中,循环结构可以使某些代码块重复执行多次,以便处理大量数据或使程序更加简洁。Python 提供了两种循环结构:for循环和 while循环。

1.for循环

在 Python 中,使用for循环对序列(如列表、元组、字符串等)或其他可迭代对象进行迭代或遍历,执行固定次数的操作或是迭代字典中的键值对。循环语句会执行循环体内的代码,针对序列中的每个元素,执行指定的操作。

for var in sequence:
    # 执行的代码块

其中,var 是变量名,表示序列中的当前元素,在每次循环中被重新赋值;sequence 是要循环遍历的序列或其他可迭代对象。

在Python中,for循环可以用于遍历以下类型的对象:

  1. 序列对象:列表(List)、元组(Tuple)、字符串(String)等;
  2. 映射对象:字典(Dictionary);
  3. 集合对象:集合(Set);
  4. 可迭代对象:range()、map()、filter()、zip() 等。
  5. 数字:range(a,b)、range(a)等
# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# 遍历字典
colors = {"red": 1, "blue": 2, "green": 3}
for color in colors:
    print(color)

#遍历元组
numbers = (1, 2, 3, 4)
for number in numbers:
    print(number)

#遍历集合
my_set = {1, 2, 3, 2}
for x in my_set:
    print(x)

#遍历字符串
s = "Hello, world!"
for c in s:
    print(c)

在遍历数值时,需要借助使用range() 函数生成一系列数字,然后使用 for 循环遍历这些数字。range() 函数有三种参数形式: 

  1. range(stop):返回一个从 0 开始到 stop-1 的数字序列;
  2. range(start, stop):返回一个从 start 开始到 stop-1 的数字序列;
  3. range(start, stop, step):返回一个从 start 开始,每次增加 step,直到 stop-1 的数字序列。
# 遍历数字序列1
for i in range(5):
    print(i,end=" ")
#输出0 1 2 3 4

# 遍历数字序列2
for j in range(1, 10):
    print(j,end=" ")
#输出1 2 3 4 5 6 7 8 9

# 遍历数字序列3
for j in range(1, 10, 2):
    print(j,end=" ")
#输出1 3 5 7 9 

# 遍历数字序列4
for k in range(10, 0, -1):
    print(k,end=" ")
#输出10 9 8 7 6 5 4 3 2 1 

2.while循环

while 循环可以重复执行一个代码块,直到指定的条件不满足为止。

while 条件语句:
    语句块

在执行 while 循环时,首先检查条件语句是否满足,如果为 True 就执行语句块,然后再次检查条件语句的值,如此反复直到条件语句的值为 False 为止。

例如:

# 计算 1 到10 的和
sum = 0
i = 1
while i <= 10:
    sum += i
    i += 1

print("1 到 10 的和为:", sum)

在这个例子中,while 循环重复执行了两个语句块,即 sum += ii += 1,直到变量 i 这个计数器的值大于 10 为止。需要注意的是,while 循环中必须确保循环条件最终会变为 False,或者适时调用break,否则会出现无限循环的情况。

3.循环嵌套

循环嵌套是指在一个循环语句内部嵌套了另一个完整的循环语句。Python 支持使用 forwhile 关键字进行循环嵌套。

循环嵌套可以在处理复杂问题时提供更多的灵活性,能够让我们更好地组合和重复使用代码,具有非常广泛的应用场景。但是需要注意的是,如果层数过多或者循环次数过大,循环嵌套可能会导致程序执行效率降低。

例如:

# 打印九九乘法表
for i in range(1, 10):
    for j in range(1, i + 1):
        print('{}×{}={}\t'.format(j, i, i*j), end='')
    print()

在这个例子中,利用 for 循环嵌套遍历了九九乘法表中的所有元素,并打印出每个元素的值。外层循环控制行数,内层循环控制列数,通过适当地调整循环变量的取值范围和步长,即可生成不同大小、不同形式的乘法表。

需要注意的是,在循环嵌套中还可以使用 breakcontinue 等控制流语句来改变循环的执行方式。当出现嵌套循环时,需要注意循环变量的命名和作用范围,避免出现不必要的误解或错误。

四、break和continue

在 Python 的循环语句中,breakcontinue 是两种控制循环流程的关键字,它们可以帮助我们在特定条件下改变循环的执行方式。

1.break语句

break 语句用于在循环中立即停止并退出循环,跳转到循环外的下一条语句。在编写循环时,有时我们需要在满足某些条件时提前结束循环,这时可以使用 break 语句来实现。

while 条件语句1:
    语句块1
    if 条件语句2:
        break

在执行 while 循环时,首先检查条件语句的值,如果为 True 就执行循环体内的语句块,如果在执行循环体内的某条语句时,条件变为 True,就会执行 break 语句,跳出循环并执行循环外的下一条语句。

例如:

# 找到第一个大于 100 的数
numbers = [1, 32, 56, 78, 102, 45, 67, 88]
for num in numbers:
    if num > 100:
        print("Found:", num)
        break

在这个例子中,利用 for 循环遍历了一个整数列表,寻找其中第一个大于 100 的数。当找到符合条件的数时,执行 break 语句退出循环,并打印出找到的结果。

注意,如果循环执行完毕仍然没有找到符合条件的数,则不会执行 break 语句。

2.continue语句

continue语句用于跳过当前循环中的剩余语句,直接进入下一次循环。在编写循环时,有时我们需要在某些特定条件下跳过部分循环体内的语句,这时可以使用 continue 语句来实现。

while 条件语句1:
    语句块
    if 条件语句2:
        continue

在执行 while 循环时,首先检查条件语句1的值,如果为 True 就执行循环体内的语句块,如果在执行循环体内的某条语句时,条件变为 True,就会执行 continue 语句,跳出该次循环直接进入下一次循环。

例如:

for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i)

上述代码使用 range() 函数生成一个从 110 的数列,并对其中的每个数进行判断。如果当前数可以被 2 整除,即为偶数,则执行 continue 语句,直接跳过本次循环中的剩余语句(这里只有一个 print() 函数),然后进入下一次循环。否则,执行 print() 函数打印当前数的值。

注意,如果循环执行完毕仍然没有找到符合条件的数,则不会执行 continue 语句。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值