python开发之路【第四章】:python程序流程控制

语句

一、行的概念

1.1 物理行

定义 :程序员在编辑器中手动编写代码时,肉眼可见的每一行,是代码的「视觉行」。
示例

python 复制代码
print("Hello")
a = 1 + 2 + 3

上面两行代码,就是两个物理行。

1.2 逻辑行

定义 :Python解释器实际执行的一条完整指令,是代码的「功能行」。
示例

python 复制代码
# 一个物理行 = 一个逻辑行(最推荐的写法)
num = 10
print(num * 2)

1.3 编码规范建议

优先原则 :一个逻辑行对应一个物理行。这是Python官方推荐的编码风格,代码可读性最高。
特殊场景 :若需在一个物理行中写多个逻辑行,必须用分号;分隔(不推荐频繁使用,仅适用于极简场景)。
示例

python 复制代码
# 一个物理行包含两个逻辑行(分号分隔)
a = 5; print(a * 3)  # 解释器会依次执行「赋值」和「打印」两个逻辑行

1.4 长逻辑行的换行技巧

隐式换行

定义 :在括号(()/[]/{})内的内容换行,Python 解释器会自动识别为同一逻辑行,无需额外标记。
优势 :无需手动加符合,代码更简洁,是python中最常用的换行方式。
示例

python 复制代码
# 列表([])内隐式换行
fruits = [
    "apple",
    "banana",
    "orange"
]

# 表达式(())内隐式换行
total = (
    10 + 20
    + 30 + 40
    + 50
)

# 字典({})内隐式换行
person = {
    "name": "Alice",
    "age": 25,
    "city": "Beijing"
}

显式换行

定义 :通过折行符\(反斜杠)标记换行,需将\放在一行的末尾,告诉解释器「下一行是本行的延续」。
注意\后必须紧跟换行,不能有空格或其他字符,否则会报错。
示例

python 复制代码
# 显式换行(反斜杠)
total = 10 + 20 + 30 + \
        40 + 50 + 60

# 错误示例:\后有空格
# total = 10 + 20 + \ (空格)
#         30 + 40  # 解释器会报错

二、选择语句

选择语句的核心是根据条件选择性执行代码 ,Python中最常用的就是if-else系列语句。

2.1 基础if-else语句

作用

让程序根据"条件是否成立"二选一执行代码块。

语法

python 复制代码
if 条件表达式:
    条件成立时执行的代码块
else:
    条件不成立时执行的代码块

实战练习:体温判断

需求:输入体温,36~37之间输出"正常",否则输出"异常"。

python 复制代码
# 输入体温并转换为浮点数
temperature = float(input("请输入体温:"))
# 判断逻辑
if 36 <= temperature <= 37:
    print("正常")
else:
    print("异常")

2.2 省略else:仅判断"满足条件"的场景

如果只需要在条件成立时执行代码,不成立时无操作,可省略else

语法

python 复制代码
if 条件表达式:
    条件成立时执行的代码块

实战练习:课程阶段匹配

需求:输入课程阶段数,输出对应课程名称(仅处理1-4的情况)。

python 复制代码
stage = int(input("请输入课程阶段数:"))
if stage == 1:
    print("Python语言核心编程")
if stage == 2:
    print("Python高级软件技术")
if stage == 3:
    print("Web 全栈")
if stage == 4:
    print("人工智能")

2.3 elif:多条件分支判断

当需要判断"多个互斥条件"时,用elif(else if的简写)更高效,避免多层if嵌套。

语法

python 复制代码
if 条件1:
    条件1成立执行的代码
elif 条件2:
    条件2成立执行的代码
...
else:
    所有条件都不成立执行的代码

实战练习1:判断数字正负零

python 复制代码
num = float(input("请输入一个数字:"))
if num > 0:
    print("正数")
elif num < 0:
    print("负数")
else:
    print("零")

实战练习2:智商等级计算

需求:根据心理年龄(MA)和实际年龄(CA)计算IQ,判断智商等级(IQ=MA/CA*100)。

python 复制代码
# 输入并转换为整数
ma = int(input("请输入心理年龄:"))
ca = int(input("请输入实际年龄:"))
# 计算IQ(注意除法用/,避免整数除法)
iq = ma / ca * 100
# 多分支判断
if iq >= 140:
    print("天才")
elif 120 <= iq <= 139:
    print("超常")
elif 110 <= iq <= 119:
    print("聪慧")
elif 90 <= iq <= 109:
    print("正常")
elif 80 <= iq <= 89:
    print("迟钝")
else:
    print("低能")

1.4 if嵌套:条件里套条件

当判断逻辑需要"先大条件,后小条件"时,用if嵌套。

实战练习:月份天数判断

需求:输入月份,输出对应天数(1/3/5/7/8/10/12→31天;2→29天;4/6/9/11→30天;其他提示月份有误)。

python 复制代码
month = int(input("请输入月份:"))
# 外层判断:月份是否合法
if 1 <= month <= 12:
    # 内层判断:天数
    if month == 2:
        print("29天")
    elif month == 4 or month == 6 or month == 9 or month == 11:
        print("30天")
    else:
        print("31天")
else:
    print("请输入正确的月份")

三、循环语句:让程序"重复做"

循环语句的核心是重复执行一段代码 ,Python中主要有whilefor两种,适用场景不同。

3.1 while循环:"条件满足就继续"

while擅长根据条件重复执行,只要条件为True,就会一直循环。

基础语法

python 复制代码
while 条件表达式:
    循环体代码
场景1:无限循环程序(重复执行代码)

需求:让代码重复执行。

python 复制代码
while True:  # 无限循环
    # 执行核心逻辑(示例:打印提示)
    print("\n===== 程序运行中 =====")

代码说明:while True是无限循环,请不要轻易尝试。

场景2:循环计数(按规律生成数字)
练习1:按规律输出数字
python 复制代码
# 输出0 1 2 3
i = 0
while i <= 3:
    print(i, end=" ")
    i += 1  # 计数自增
print()

# 输出2 3 4 5 6
i = 2
while i <= 6:
    print(i, end=" ")
    i += 1
print()

# 输出1 3 5 7
i = 1
while i <= 7:
    print(i, end=" ")
    i += 2
print()

# 输出8 7 6 5 4
i = 8
while i >= 4:
    print(i, end=" ")
    i -= 1
print()

# 输出-1 -2 -3 -4 -5
i = -1
while i >= -5:
    print(i, end=" ")
    i -= 1
print()
练习2:纸张对折超珠峰

需求:纸厚0.01毫米,计算对折多少次超过珠峰(8844.43米=8844430毫米)。

python 复制代码
thickness = 0.01  # 初始厚度(毫米)
height = 8844430   # 珠峰高度(毫米)
count = 0          # 对折次数

while thickness <= height:
    thickness *= 2  # 对折,厚度翻倍
    count += 1      # 次数+1

print(f"对折{count}次后,厚度{thickness:.2f}毫米,超过珠峰")

3.2 for循环:"按次数/遍历重复"

for擅长固定次数循环遍历可迭代对象(如列表、范围),语法更简洁。

基础语法

python 复制代码
for 变量 in 可迭代对象:
    循环体代码

常用:range(start, end, step) 生成数字序列(左闭右开)。

场景1:按规律累加数字
python 复制代码
# 累加0 1 2 3
sum_num = 0
for i in range(4):  # range(4)=0,1,2,3
    sum_num += i
print(f"0+1+2+3={sum_num}")  # 输出6

# 累加2 3 4 5 6
sum_num = 0
for i in range(2, 7):  # range(2,7)=2,3,4,5,6
    sum_num += i
print(f"2+3+4+5+6={sum_num}")  # 输出20

# 累加1 3 5 7
sum_num = 0
for i in range(1, 8, 2):  # 步长2
    sum_num += i
print(f"1+3+5+7={sum_num}")  # 输出16

# 累加8 7 6 5 4
sum_num = 0
for i in range(8, 3, -1):  # 反向,步长-1
    sum_num += i
print(f"8+7+6+5+4={sum_num}")  # 输出30

# 累加-1 -2 -3 -4 -5
sum_num = 0
for i in range(-1, -6, -1):
    sum_num += i
print(f"-1+-2+-3+-4+-5={sum_num}")  # 输出-15
场景2:纸张对折15次的厚度
python 复制代码
thickness = 0.01  # 初始厚度
for _ in range(15):  # 固定15次循环,无需变量用_
    thickness *= 2
print(f"对折15次后,厚度为{thickness:.2f}毫米")  # 输出327.68毫米
场景3:猜数字(猜对结束循环)
python 复制代码
# 1. 导入库
import random

# 2. 产生随机数
random_number = random.randint(1, 100)

# 3. 核心代码
count = 0
while True:
    input_number = int(input("请输入数字:"))
    count += 1
    if input_number > random_number:
        print("大了")
    elif input_number < random_number:
        print("小了")
    else:
        print(f"猜对了,一共猜了{count}次")
        break

3.3 while vs for:核心区别

循环类型 适用场景 示例
while 根据条件重复(不确定次数) 纸张对折到超过珠峰(次数未知)
for 固定次数重复(确定次数) 纸张对折15次(次数已知)

四、跳转语句:控制循环节奏

跳转语句用于中断/跳过循环 ,包括breakcontinue

4.1 break:直接跳出循环

break立即终止整个循环,循环体后续代码不再执行。

4.2 continue:跳过当前轮次

continue跳过当前轮次剩余代码,直接进入下一轮循环。

实战练习:累加1到100之间的被3整除的整数和

思路1:符合条件才累加

python 复制代码
number = 0
for i in range(1, 101):
    if i % 3 == 0:
        number += i
print(f"思路1结果:{number}")

思路2:不符合就跳过

python 复制代码
sum = 0
for item in range(1, 101):
    if item % 3 != 0:
        # 跳出本次循环执行下一次循环
        continue
    sum += item
print(f"思路2结果:{sum}")  # 和思路1结果一致

五、核心总结

  1. 选择语句(if-else/elif/嵌套):核心是"条件判断",elif适合多分支互斥场景,嵌套适合多层条件筛选;
  2. 循环语句:while按"条件"循环(次数不确定),for按"次数/遍历"循环(次数确定),按需选择;
  3. 跳转语句:break终止整个循环,continue跳过当前轮次,合理使用可简化循环逻辑。