Skip to content

Python

参考资料:

程序控制结构

「程序控制结构」是指控制程序如何执行的,主要有三大流程控制语句:

  • 顺序控制
  • 分支控制
  • 循环控制

1、顺序控制

「顺序控制」是指程序从上到下逐行的执行,中间没有任何的判断和跳转。

示例:

py
# 顺序控制
# 顺序控制
print("程序开始执行")
print("1.小明去上学")
print("2.小明学习中")
print("3.小明放学了")
print("策划给你续执行结束")

# Python中定义变量时采用合法的前向引用
num1 = 12
num2 = num1 + 2

2、分支控制

「分支控制」是让程序有选择的执行,分支控制有三种:单分支、双分支、多分支。

2.1.单分支

「单分支」是通过 if 语句来实现的,基本语法如下:

py
if 条件表达式:
  代码块
  • 当条件表达式为 True 时,就会执行代码块;如果为 False,就不执行
  • Python 缩进非常重要,是用于界定代码块的,相当于其他编程语言中的大括号{}
    • 最短的缩进对较长的有包含关系,缩进前后没有要求,但是每个代码块应具有相同的缩进长度(TAB 或者相同个数的空格)
    • 可以看成,和其它语言相比:其它语言的代码块是用{}表示的,Python 缩进就代替了{}

示例:

py
# 单分支 if
if 4 < 1:
    print("ok1")
    print("ok2")
print("ok3")  # 打印

if 100 > 20:
    print("ok4")  # 打印
    print("ok5")  # 打印
    if 8 > 2:
        print("ok6")  # 打印

2.2.双分支

「双分支」的基本语法如下:

py
if 条件表达式:
  执行代码块1
else:
  执行代码块2
  • 条件表达式为 true ,则执行代码块1,否则执行代码块2
  • 只能二选一执行,不可能都执行,也不可能都不执行

示例:

py
# 判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被4整除,但不能被100整除(2)能被400整除
year = 2024
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print(f"{year} 是闰年")
else:
    print(f"{year} 不是闰年")

2.3.多分支

「多分支」的语法如下:

py
if 条件表达式1:
    执行代码块1
elif 条件表达式2:
    执行代码块2
...
else:
    执行代码块n+1
  • 当条件表达式 1 成立时,即执行代码 1
  • 如果表达式 1 不成立,才去判断表达式 2 是否成立
  • 如果表达式 2 成立,就执行代码块 2
  • 以此类推,如果所有的表达式都不成立则执行 else 的代码块
  • 只能有一个执行入口

示例:

py
# 参加Python考试,根据得分获得对应奖励
score = int(input("请输入成绩[整数]:"))
if score >= 0 and score <= 100:
    if score == 100:
        print("BWM")
    elif score > 80 and score <= 99:
        print("iphone13")
    elif score >= 60 and score <= 80:
        print("ipad")
    else:
        print("none")
else:
    print(score, "不在0~100")

3、嵌套分支

「嵌套分支」是指在一个分支结构中又嵌套了另一个分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。语法:

py
if:
    if:
        # if-else...
    else:
        # if-else...

注意:一般不要超过3层,否则影响可读性不好。

示例:

py
# 参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并根据性别提示进入男子组或女子组,输入成绩和性别,进行判断和输出信息。
score = float(input("请输入你的成绩:"))

if score > 8.0:
    gender = input("请输入你的性别(男|女):")
    if gender == "男":
        print("男子组决赛")
    else:
        print("女子组决赛")
else:
    print("淘汰")

4、for循环

「for循环」就是让你的代码可以循环的执行,语法:

py
for <变量> in <范围/序列>:
    <循环操作语句>
  • forin 是关键字,是规定好的
  • <范围/序列> 可以理解成要处理的数据集,需要是可迭代对象(比如字符串,列表等…)
  • 循环操作语句,这里可以有多条语句,也就是我们要循环执行的代码,也叫循环体
  • python 的 for 循环是一种「轮询机制」,是对指定的数据集,进行轮询处理

示例:

py
# 编写一个程序,可以打印5句 “hsp” 。
# 定义一个列表(后面详细介绍),可以视为一个数据集
nums = [1, 2, 3, 4, 5]
print(nums, type(nums))

for i in [1, 2, 3, 4, 5]:
    print("hsp", i)

for i in nums:
    print("hsp", i)

for 循环控制流程图:

for循环执行流程图

注意实现和细节说明:

  • 循环时,依次将序列中的值取出赋给变量
  • 如需要遍历数字序列,可以使用内置 range() 函数,它会生成数列

range() 函数生成数列是前闭后开的,函数解释:

py
# range函数解读
class range(stop)
class range(start, stop, step=1)
# 1、虽然被称为函数 range 实际上是一个不可变的序列类型
# 2、range 默认增加的步长 step是1也可以指定start 默认是0
# 3、通过list() 可以查看range() 生成的序列包含的数据
# 4、range() 生成的数列是前闭后开

示例:

py
# 1、生成一个 [1, 2, 3, 4, 5]
r1 = range(1, 6, 1)
r1 = range(1, 6)
print("r1 = ", list(r1))

# 2、生成一个 [0, 1, 2, 3, 4, 5]
r2 = range(0, 6, 1)
r2 = range(0, 6)
print("r2 = ", list(r2))

# 3、生成一个 r3 =  [1, 3, 5, 7, 9]
r3 = range(1, 10, 2)
print("r3 = ", list(r3))

# 4、输出10句"hello, python"
for i in range(10):
print("hello, python")

并且 for 可以和 else 搭配使用:

py
for <variable> in <ssequence>:
    <statements>
else:
    <statements>

for 循环正常的完成遍历,在遍历过程中,没有被打断,会进入 else 代码块。

示例:

py
# for-else案例
nums = [1, 2, 3]
for i in nums:
    print("hsp")
    # 演示break
    # if i == 2:
    #     break  # 中断-提前结束for
else:
    print("没有循环数据了..."

5、while循环

「while循环」用于在表达式为真的情况下,重复的(循环的)执行,语法:

py
while 判断条件(condition):
    循环操作语句(statements)...
  • while 是关键字,是规定好的
  • 当判断条件为 True 时,就执行循环操作语句,如果为 False,就退出 while
  • 循环操作语句,这里可以有多条语句,也就是要循环执行的代码,也叫循环体

示例:

py
# 使用while完成10句 “hsp”
i = 1
while i <= 10:
print("hsp")
i += 1

while 循环控制流程图:

while循环执行流程图

while 可以和 else 配合使用,在判断条件为 false 时,会执行 else 的语句块,即:在遍历过程中,没有被打断(解释:比如没有执行到 break 语句)。语法:

py
while 判断条件(condition):
    循环操作语句(statements)
else:
    其它语句<additional_statements(s)>

示例:

py
# while-else使用案例
i = 0
while i < 3:
    print("hsp")
    i += 1
    # 演示break 中断
    # if i == 1:
    #     break
else:
    print("i < 3 不成立 i =", i)

6、多重循环

「多重循环」是指将一个循环放在另一个循环体内,就形成了嵌套循环。其中,forwhile 均可以作为外层循环和内层循环,建议最多只使用两层循环,不要超过三层。

实际上,嵌套循环就是把内层循环当做外层循环的循环体。如果外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次。

示例:

py
# 如果外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
for i in range(2):
    for j in range(3):
        print("i=", i, "j=", j)

7、break

「break」用于终止某个语句块的执行,使用在循环中。流程图:

break执行流程图

示例:

py
# 随机生成 1-100 的一个数,直到生成了97这个数,看看一共用了多少次
# random.randint(a, b) 返回随机整数N满足 a<=N<=b。相当于randrange(a, b+1)
import random

count = 0
while True:
    count += 1
    n = random.randint(1, 100)
    print(n)
    if n == 97:
        break
print("count =", count)

注意实现和细节说明:

  • break 语句是用在 for 或 while 循环所嵌套的代码
  • 它会终结最近的外层循环,如果循环有可选的 else 子句,也会跳过该子句
  • 如果一个 for 循环被 break 所终结,该循环的控制变量会保持其当前值

示例:

py
# 它会终结最近的外层循环,如果循环有可选的else子句,也会跳过该子句。
count = 0
while True:
print("hi")
count += 1
if count == 3:
break
while True:
print("ok")
break
else:
print("hello")

# 如果一个for循环被break所终结,该循环的控制变量会保持其当前值。
nums = [1, 2, 3, 4, 5]
for i in nums:
if i > 3:
break
print("i =", i)
py