你有没有想过,为什么计算机能完成复杂的任务?比如,自动识别垃圾邮件、计算圆周率到小数点后1000位,或者让游戏角色自动避开障碍物?这背后的秘密,就藏在控制流里。
嗨,我是你的Python学习搭子!上期我们搞定了运算符,今天我们要解锁编程的第四个核心概念:控制流。
别被这个词吓到,其实它就像我们生活中的导航:没有导航,你只能沿着一条路开到黑;有了导航,你就能根据路况选择最优路线。控制流就是计算机的导航,告诉它“下一步该做什么”。
因为控制流是程序的“大脑”,没有它,程序就像一台只会重复同一动作的机器。有了控制流,你就能让代码像一个聪明的决策者,根据不同情况做出不同反应。比如,判断用户输入是否有效,循环处理列表中的每个元素,或者在满足特定条件时跳出循环。
条件判断的核心逻辑是:根据条件是否成立,决定执行哪段代码。就像你在十字路口,根据交通信号灯的颜色决定前进还是停止。
if 条件1: 条件1成立时执行的代码elif 条件2: 条件1不成立但条件2成立时执行的代码else: 所有条件都不成立时执行的代码
import randomsecret_number = random.randint(1, 100)guess = int(input("猜一个1-100之间的数字:"))if guess == secret_number:print("恭喜你,猜对了!")elif guess < secret_number:print("猜小了,再试试!")else:print("猜大了,再试试!")
- 1. 首先,程序随机生成一个1-100之间的秘密数字。
- 3. 程序通过if语句判断用户的猜测与秘密数字的关系,并给出相应的提示。
循环结构的核心逻辑是:重复执行一段代码,直到满足特定条件。就像你每天刷牙,重复同一个动作,直到刷完所有牙齿。
for循环适合处理已知循环次数的情况,比如遍历列表、字符串等。
numbers = [1, 2, 3, 4, 5]sum = 0for num in numbers:sum += numprint("列表元素的和为:", sum)
- 1. 程序定义了一个包含5个元素的列表
numbers。 - 2. 使用for循环遍历列表中的每个元素,将其累加到
sum变量中。
while循环适合处理未知循环次数的情况,只要条件成立,就会一直执行循环体。
sum = 0i = 1while i <= 100:sum += i i += 1print("1到100的和为:", sum)
- 2. 当
i小于等于100时,执行循环体,将i加到sum中,并将i加1。 - 3. 当
i大于100时,循环结束,输出sum的值。
跳转语句的核心逻辑是:改变循环的执行流程。就像你在跑步时,突然停下来休息(break),或者跳过某一段路(continue)。
当break语句被执行时,程序会立即跳出当前所在的循环,不再执行循环体中剩余的代码。
numbers = [1, 3, 5, 7, 8, 9, 10]for num in numbers:if num % 2 == 0:print("找到第一个偶数:", num)break
- 2. 当找到第一个偶数(8)时,打印该偶数,并使用
break语句跳出循环。
当continue语句被执行时,程序会跳过当前循环体中剩余的代码,直接进入下一次循环。
for i inrange(1, 11):if i % 2 == 0:continueprint(i)
- 1. 程序使用for循环遍历1到10之间的每个数字。
- 2. 当遇到偶数时,使用
continue语句跳过当前循环,不打印该偶数。
import randomchoices = ["石头", "剪刀", "布"]whileTrue: user_choice = input("请选择石头、剪刀或布(输入q退出游戏):")if user_choice == "q":print("游戏结束!")breakif user_choice notin choices:print("输入无效,请重新选择!")continue computer_choice = random.choice(choices)print("电脑选择:", computer_choice)if user_choice == computer_choice:print("平局!")elif (user_choice == "石头"and computer_choice == "剪刀") or \ (user_choice == "剪刀"and computer_choice == "布") or \ (user_choice == "布"and computer_choice == "石头"):print("你赢了!")else:print("你输了!")
- 1. 程序首先定义了一个包含石头、剪刀、布的列表
choices。 - 2. 使用
while循环实现游戏的持续进行,直到用户输入q退出游戏。 - 3. 用户输入选择后,程序判断输入是否有效。如果输入无效,使用
continue语句跳过当前循环,让用户重新选择。 - 4. 电脑随机选择一个选项,并与用户的选择进行比较,判断胜负。
# 错误示范if a == 10:print("a等于10") # 忘记缩进,会报错# 正确做法if a == 10:print("a等于10") # 缩进4个空格
# 错误示范whileTrue:print("无限循环") # 会一直打印,直到程序被强制终止# 正确做法while a < 10:print("循环") a += 1# 改变条件,避免无限循环
# 错误示范for i inrange(1, 11):if i % 2 == 0:break# 会在第一个偶数时跳出循环,只打印1# 正确做法for i inrange(1, 11):if i % 2 == 0:continue# 跳过偶数,打印奇数print(i)
# 给定以下用户输入user_input = input("请输入一个1-100之间的数字:")# 请判断用户输入是否有效if user_input.isdigit(): num = int(user_input)if1 <= num <= 100:print("输入有效!")else:print("输入无效,请输入1-100之间的数字!")else:print("输入无效,请输入数字!")
# 给定以下列表numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 请使用for循环打印列表中的每个偶数for num in numbers:if num % 2 == 0:print(num)
# 请使用while循环实现从10到1的倒计时i = 10while i >= 1:print(i) i -= 1print("倒计时结束!")
Q1:if语句中的条件可以是哪些类型?A:if语句中的条件可以是布尔值(True或False),也可以是返回布尔值的表达式。例如,if a > 10、if a in list或if a == b。
Q2:for循环和while循环有什么区别?A:for循环适合处理已知循环次数的情况,比如遍历列表、字符串等;while循环适合处理未知循环次数的情况,只要条件成立,就会一直执行循环体。
Q3:break和continue有什么区别?A:break语句会立即跳出当前所在的循环,不再执行循环体中剩余的代码;continue语句会跳过当前循环体中剩余的代码,直接进入下一次循环。
Q4:如何避免无限循环?A:避免无限循环的关键是确保循环条件会在某个时刻变为False。例如,在while循环中,改变条件变量的值,或者在循环体中使用break语句跳出循环。
Q5:控制流的综合应用有哪些?A:控制流的综合应用非常广泛,比如实现游戏逻辑、处理用户输入、循环处理数据等。通过组合使用条件判断、循环结构和跳转语句,你可以编写出更加灵活、智能的程序。
恭喜你!你已经掌握了Python的三大控制流工具:
- • ✅ 条件判断:根据条件是否成立,决定执行哪段代码
- • ✅ 循环结构:重复执行一段代码,直到满足特定条件
今日成就:你已经学会了用控制流让代码做出决策,这是编程的核心技能之一。现在你可以编写出更加灵活、智能的程序了!
- 2. 巩固:试着用控制流解决你生活中的问题,比如判断考试成绩等级、循环处理文件中的每一行
- 3. 进阶:下期我们学习Python的函数,让代码更加模块化、可复用
- • 你卡在哪一步了? 在评论区告诉我,我24小时内必回
- • 完成练习的朋友,在评论区打卡"✅已掌握控制流"
- • 下期想看什么? Python函数?模块?还是面向对象编程?
我是你的Python学习搭子,专注用最白话的方式讲技术。关注我,下次更新时系统会第一时间提醒你。我们下期见!