手记

第二章:Python 流程控制



第二章:Python 流程控制

在学习 Python 编程的过程中,流程控制语句是非常重要的一环。无论是判断条件的分支结构,还是重复执行某段代码的循环结构,都离不开流程控制。本章主要内容包括:

  • 2.1 条件语句: 通过 ifelseelif 语句实现分支选择,让程序可以根据不同的条件执行不同的代码块。

  • 2.2 循环语句: 使用 forwhile 循环结构,以及 breakcontinue 控制循环流程,实现代码的重复执行与中断。

  • 2.3 代码块与缩进: 理解 Python 独特的代码结构 —— 依靠缩进来划分代码块,并掌握良好的缩进规范。

  • 2.4 实战练习: 通过“猜数字游戏”和“九九乘法表”两个练习,将所学的流程控制知识应用到实际项目中,加深理解并锻炼编程能力。

接下来,我们将对以上内容进行详细介绍。


2.1 条件语句:if、else、elif

条件语句用于根据给定的条件判断执行不同的代码块。在 Python 中,主要使用 if 语句来判断条件是否成立,并通过 elseelif 进行分支延伸。基本语法结构如下:

if 条件表达式:
    # 条件为True时执行的代码块
    执行语句
elif 另一条件表达式:
    # 如果上面的条件不满足且此条件满足时执行的代码块
    执行语句
else:
    # 当以上所有条件均不满足时执行的代码块
    执行语句

示例讲解

假设我们想判断一个数是否为正数、负数或者零,可以这样写:

num = float(input("请输入一个数字: "))
if num > 0:
    print("这是一个正数")
elif num < 0:
    print("这是一个负数")
else:
    print("数字为零")

在上述代码中,我们通过用户输入获取一个数字,然后使用 if 判断该数字是否大于 0(即 $num > 0$),如果条件成立,则输出“这是一个正数”;如果不成立,再判断是否小于 0;最后,若两种情况均不满足,则说明数字为零。
这种结构使得程序能够根据不同情况执行不同逻辑,从而实现复杂的业务逻辑。

注意事项

  1. 条件表达式返回布尔值: Python 中的条件判断要求条件表达式返回 TrueFalse。例如,表达式 $a == b$ 就会返回布尔值。

  2. 冒号和缩进: 每个条件语句结尾都必须加上冒号(:),并且随后的代码块必须正确缩进,否则会报语法错误。

  3. 多重条件判断: 当需要判断多个条件时,elif 语句非常有用,它可以使代码结构更加清晰易懂。


2.2 循环语句:for、while、break、continue

循环语句是实现代码重复执行的重要结构。Python 提供了两种主要的循环语句:for 循环和 while 循环。
此外,breakcontinue 关键字可以进一步控制循环流程,分别用于提前退出循环和跳过本次循环剩余代码进入下一次循环。

for 循环

for 循环通常用于遍历序列(如列表、元组、字符串等)或其他可迭代对象。基本语法如下:

for 变量 in 可迭代对象:
    # 循环体
    执行语句

示例:遍历列表

fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
    print("I like", fruit)

在这段代码中,for 循环依次取出列表 fruits 中的每个元素,并赋值给变量 fruit,然后打印输出。

while 循环

while 循环用于在满足一定条件下重复执行代码块。基本语法如下:

while 条件表达式:
    # 循环体
    执行语句

示例:计数器

count = 1
while count <= 5:
    print("计数:", count)
    count += 1

这段代码会一直循环,直到变量 count 超过 5 为止。

break 与 continue 的使用

  • break: 用于提前退出整个循环。例如,当在循环中遇到某个特殊条件时,使用 break 跳出循环。

    for i in range(1, 10):
        if i == 5:
            break  # 当i等于5时,退出循环
        print(i)
  • continue: 用于跳过当前循环的剩余代码,直接进入下一次循环的判断。例如:

    for i in range(1, 10):
        if i % 2 == 0:
            continue  # 当i为偶数时跳过打印
        print(i)

在上面的代码中,continue 会使程序跳过本次循环中 print(i) 的执行,从而只打印奇数。


2.3 代码块与缩进:Python 的代码结构

与许多其他编程语言不同,Python 使用缩进来表示代码块的层次结构。这种设计使得代码更具可读性,但同时也要求我们在编写代码时严格遵守缩进规则。

为什么使用缩进?

  1. 代码结构清晰: 通过缩进来划分代码块,使得程序结构一目了然,易于阅读和维护。

  2. 避免冗余符号: 不需要使用大括号 {} 来标识代码块,从而减少了符号的冗余,提高了代码简洁性。

缩进规则

  • 统一缩进: 一般推荐使用 4 个空格作为一个缩进层次。注意,不要混用空格和制表符(Tab)。

  • 嵌套结构: 在编写嵌套代码(如 if 语句中的内部语句,或循环中的代码块)时,每个嵌套层次都要相对于外层增加一个缩进单位。

示例讲解

以下是一个包含条件判断和循环的代码示例,展示了如何使用缩进划分代码块:

for i in range(1, 6):
    if i % 2 == 0:
        print(i, "是偶数")
    else:
        print(i, "是奇数")

在这段代码中,for 循环体内包含一个 if-else 条件判断。由于缩进的存在,Python 能够清楚地知道哪些代码是属于循环体、哪些代码是属于条件判断体。

常见错误

  1. 缩进不一致: 如果在同一代码块中混用了不同数量的空格或混用 Tab 和空格,解释器会报错。

  2. 缺少缩进: 某些代码块未按要求缩进,也会导致语法错误。

养成良好的代码缩进习惯,对于编写整洁、易维护的 Python 程序至关重要。


2.4 实战练习

理论知识只有通过实践才能真正掌握,下面我们通过两个练习来加深对流程控制的理解:

2.4.1 猜数字游戏

猜数字游戏是一个经典的编程练习,通过生成随机数,让用户猜测,并根据用户输入提供提示,直到用户猜中正确数字为止。这个项目将综合使用条件判断、循环、break 等关键语句。


完整代码示例

import random

def guess_number_game():
    print("欢迎来到猜数字游戏!")
    # 生成一个1到100之间的随机整数
    target = random.randint(1, 100)
    attempts = 0
    
    while True:
        try:
            guess = int(input("请输入你猜的数字 (1-100): "))
        except ValueError:
            print("请输入有效的整数!")
            continue
        
        attempts += 1
        
        if guess == target:
            print(f"恭喜你!猜对了,答案正是 {target}。你总共猜了 {attempts} 次。")
            break
        elif guess < target:
            print("你猜的数字太小了,请再试一次。")
        else:
            print("你猜的数字太大了,请再试一次。")
            
if __name__ == "__main__":
    guess_number_game()

代码讲解:

  • 使用 random.randint(1, 100) 生成 1 到 100 之间的随机数作为目标数字。

  • 通过 while True 循环不断提示用户输入猜测数字。

  • 使用 try-except 捕获用户输入非整数的异常,保证程序健壮性。

  • 利用 ifelifelse 判断用户猜测数字与目标数字的大小关系,并给出相应提示。

  • 当用户猜中数字时,使用 break 退出循环,并输出猜测次数。

2.4.2 九九乘法表

九九乘法表是编程初学者常见的练习项目,通过嵌套循环生成乘法表,可以帮助大家熟悉 for 循环的嵌套使用及代码块的结构。

程序思路

  • 使用两个嵌套的 for 循环,外层循环控制行数,内层循环控制列数。

  • 对于每一行,输出相应乘法表达式,并通过制表符 \t 保持整齐格式。

完整代码示例

def multiplication_table():
    # 外层循环控制行(从1到9)
    for i in range(1, 10):
        # 内层循环控制列(从1到i)
        for j in range(1, i+1):
            # 打印乘法表达式,注意不换行
            print(f"{j}*{i}={i*j}", end="\t")
        # 每行结束后换行
        print()

if __name__ == "__main__":
    print("九九乘法表如下:")
    multiplication_table()

代码讲解:

  • 外层 for 循环变量 i 从 1 变化到 9,每次代表一行。

  • 内层 for 循环变量 j 从 1 变化到 i(即当前行数),生成乘法表达式 $j * i = i*j$

  • print 函数中设置 end="\t" 保持每个表达式之间的间隔整齐;每行结束后调用 print() 实现换行。


总结

本章详细介绍了 Python 的流程控制语句,从条件判断到循环结构,再到代码块与缩进的使用,帮助你打下坚实的编程基础。通过以下几点可以总结出本章的关键知识点:

  1. 条件语句:

  • 利用 ifelifelse 实现多分支判断。

  • 注意条件表达式必须返回布尔值,并且代码块必须正确缩进。

循环语句:

  • for 循环适用于遍历序列,while 循环适用于条件为真的情况。

  • 使用 break 实现提前退出循环,continue 用于跳过本次循环剩余部分。

代码块与缩进:

  • Python 使用缩进来表示代码块层级,要求缩进统一且规范。

  • 养成良好的缩进习惯有助于提高代码的可读性和维护性。

实战练习:

  • 猜数字游戏整合了条件判断和循环控制,通过异常处理保证用户输入的正确性。

  • 九九乘法表则通过嵌套循环演示了流程控制在数据输出时的应用。

通过本章的学习,你不仅掌握了基本的流程控制语法,还能通过实际项目理解这些语法在解决实际问题时的重要作用。在接下来的章节中,我们将继续深入学习 Python 的其他高级特性,并通过更多实战案例提高你的编程能力。


补充资料与建议

  1. 代码风格:
    建议大家在编写代码时遵循 PEP 8 规范,保持代码简洁、规范。

  2. 调试技巧:
    在编写循环和条件判断时,推荐使用调试工具逐步执行程序,观察变量变化,从而定位可能的逻辑错误。

  3. 扩展练习:

  • 为猜数字游戏增加计时功能,记录玩家从开始到猜中所用的时间;

  • 在九九乘法表中加入更多格式控制,使输出结果更加美观。

学习资源:
多尝试在 慕课网LeetCode 上做一些编程练习,将所学知识灵活运用到实际项目中。


结语

流程控制是 Python 编程的基础之一,理解并灵活运用这些语法结构,可以使程序逻辑更加清晰、易于维护。希望本章内容能够帮助你打好基础,今后在编写更复杂的程序时,能够得心应手。记住,多实践、多思考,编程能力才能不断提升。

接下来,你可以试着自己扩展这两个练习,或将流程控制知识应用到其他小项目中,如简单的计算器、数据过滤程序等。祝你在 Python 编程的道路上越走越远!


以上就是第二章“Python 流程控制”的全部内容,希望你能认真阅读并动手实践,从中获得更多编程乐趣与收获。如果你有任何疑问或改进建议,欢迎在评论区留言讨论,共同进步!


0人推荐
随时随地看视频
慕课网APP