Skip to content

第3天:魔法指挥棒 - Python的流程控制咒语

🧙‍♂️ 欢迎回来,小魔法师们!今天是我们魔法学习之旅的第三天。如果说昨天我们认识了魔法的基本元素,那么今天我们要学习如何指挥这些魔法元素按照我们的意愿行动

想象一下,如果你学会了最强大的咒语,却不知道什么时候该用什么咒语,那该有多糟糕啊!这就是为什么我们需要「流程控制」这根神奇的魔法指挥棒。✨

🧠 什么是魔法流程控制?

其实我们每天都在使用「流程控制」的思想!📝

  • 条件判断:如果今天下雨→施展避水咒;如果是晴天→施展防晒咒;如果是大风→施展防风咒
  • 循环重复:每天早晨都要重复的「起床→洗漱→吃早餐→练习魔法」

在Python魔法世界中,这些逻辑也有对应的魔法咒语:

  1. 条件判断咒语if语句——让魔法程序学会「做选择」
  2. 循环魔法forwhile循环——让魔法程序学会「重复施法」

今天,我们就要成为「魔法指挥家」,让魔法程序完全按照我们的意愿运行!✨

🚦 条件判断咒语:if 魔法 - 让程序学会「做选择」

if魔法是Python中最基本的「判断咒语」!它能让魔法程序像魔法师一样,根据不同情况做出不同反应。

基本的 if 魔法 - 简单的是非判断

想象一下:你是一个守护魔法学院大门的石像鬼,只有满18岁的魔法师才能进入。这就是一个典型的if判断场景!

python
# 基本的if魔法示例
age = 18  # 设置一个年龄

if age >= 18:  # 如果年龄大于等于18岁
    print("🧙‍♂️ 恭喜你,已经成年了!")  # 执行这段魔法
    print("✨ 你可以进入魔法学院了。")    # 继续执行这段魔法

💡 魔法小知识:Python使用缩进(通常是4个空格)来表示魔法咒语的归属,这一点和其他魔法语言很不一样哦!

if-else 魔法 - 两种选择的魔法岔路口

如果想让魔法程序有「两手准备」,那就用if-else魔法!就像出门前看天气:下雨施避水咒,不下雨就施飞行咒。

python
# if-else魔法示例
weather = "下雨"  # 假设今天下雨

if weather == "下雨":
    print("🌧️ 今天有雨,施展避水咒!")  # 条件成立时执行
else:
    print("☀️ 今天天气不错,施展飞行咒去魔法学院!")  # 条件不成立时执行

🎯 挑战一下:把weather变量改成"晴天",看看魔法输出结果有什么变化?

if-elif-else 魔法 - 多个选择的智能判断

魔法世界不止有「是」或「否」,还有很多种可能性!比如魔法师等级可以分为「初级魔法师」「中级魔法师」「高级魔法师」「魔法大师」多个等级。这时候if-elif-else魔法就派上用场了!

python
# if-elif-else魔法示例
magic_level = 85  # 假设魔法等级是85分

if magic_level >= 90:       # 先检查是否>=90分
    print("🏆 魔法大师!你是魔法界的传奇!")      # 如果是,就是魔法大师
elif magic_level >= 80:     # 否则检查是否>=80分
    print("🌟 高级魔法师!你已经掌握了强大的魔法!")      # 如果是,就是高级魔法师
elif magic_level >= 60:     # 否则检查是否>=60分
    print("📚 中级魔法师!继续努力修炼吧!")      # 如果是,就是中级魔法师
else:                      # 如果以上条件都不满足
    print("🌱 初级魔法师!魔法之路才刚刚开始!")  # 就是初级魔法师

魔法运行机制:Python会从上到下依次检查每个条件,只要找到第一个成立的条件,就执行对应的魔法咒语,然后跳过后面所有的判断!

嵌套的 if 魔法 - 处理复杂的多层判断

有时候,判断条件就像「俄罗斯套娃」一样,一层套一层。比如:进入魔法藏书阁需要满足两个条件——首先得是魔法学院的学生,其次得有图书管理员颁发的特许证。这时候我们就需要嵌套的if魔法

python
# 嵌套的if魔法示例
is_student = True       # 是魔法学院学生
has_permission = True  # 有特许证

if is_student:  # 第一层判断:是否是魔法学院学生
    print("✅ 欢迎回来,魔法师同学。")
    # 第二层判断:是否有特许证
    if has_permission:
        print("📚 你可以进入高级藏书阁。")
    else:
        print("🚫 请先向图书管理员申请特许证。")
else:          # 如果不是魔法学院学生
    print("🚫 非魔法学院学生禁止入内。")

🧩 思考一下:如果我们把has_permission改成False,输出结果会是什么?

🔄 循环魔法 - 让程序变成「魔法效率大师」

循环魔法是编程中的「自动化魔法神器」!它能让魔法程序重复执行相同的任务,既节省魔法师的精力又避免出错。Python魔法世界提供了两种主要的循环方式:for循环和while循环。

for 循环魔法 - 逐个处理每一项

for循环就像一个「魔法分拣师」,能够依次处理一个魔法序列中的每一个元素。

示例1:遍历魔法书列表 - 和每种咒语打招呼

python
# for循环示例:遍历魔法书
spell_books = ['火球术', '冰冻术', '闪电术', '治愈术']  # 咒语列表

for spell in spell_books:  # 逐个取出咒语
    print(f"🧙‍♂️ 我学会了{spell}!")  # 对每个咒语说句话

# 输出结果:
# 🧙‍♂️ 我学会了火球术!
# 🧙‍♂️ 我学会了冰冻术!
# 🧙‍♂️ 我学会了闪电术!
# 🧙‍♂️ 我学会了治愈术!

示例2:遍历魔法咒语 - 咒语拆解

python
# for循环示例:拆解魔法咒语
magic_word = "Abracadabra"  # 一个魔法咒语

for char in magic_word:  # 逐个取出字符
    print(char)    # 打印每个字符

# 输出结果:
# A
# b
# r
# a
# c
# a
# d
# a
# b
# r
# a

示例3:使用range魔法 - 固定次数的施法

如果你需要重复施法固定次数,可以用range()魔法来帮忙!

python
# for循环示例:使用range魔法
for i in range(1, 6):  # range(1, 6)生成1到5的整数(不包含6)
    print(f"✨ 这是第{i}次施展魔法。")  # 打印施法次数

# 输出结果:
# ✨ 这是第1次施展魔法。
# ✨ 这是第2次施展魔法。
# ✨ 这是第3次施展魔法。
# ✨ 这是第4次施展魔法。
# ✨ 这是第5次施展魔法。

🎯 魔法小技巧range(start, end)魔法会生成从start开始,到end-1结束的整数序列!

while 循环魔法 - 只要条件满足就一直施法

while循环就像一个「魔法永动机」,只要条件成立,就会一直重复执行魔法咒语。

示例:魔法能量积累 - 用循环实现魔法能量累加

python
# while循环示例:积累魔法能量
magic_count = 1       # 从1开始积累
magic_energy = 0  # 用于存储魔法能量总和

while magic_count <= 10:  # 只要magic_count小于等于10,就继续施法
    magic_energy += magic_count  # 把当前的magic_count加到magic_energy里
    magic_count += 1           # 非常重要!让magic_count增加1,否则魔法会失控!

print(f"✨ 1到10的魔法能量总和是:{magic_energy}点!")  # 最终输出结果

# 输出结果:
# ✨ 1到10的魔法能量总和是:55点!

⚠️ 危险警告:在使用while循环魔法时,一定要确保循环条件最终会变为False,否则魔法会陷入永无止境的施法状态,耗尽所有魔法能量!

循环控制魔法 - 给循环装个「魔法遥控器」

有时候,我们需要「控制」循环魔法的运行——比如提前结束魔法,或者跳过某一次施法。这时候就需要breakcontinue这两个「魔法遥控器」了!

break 魔法 - 紧急刹车

break魔法就像一个「魔法紧急刹车」,能让循环魔法立即停止,不管后面还有多少魔法没有施展。

python
# break魔法示例:寻找第一个强大的魔法能量
magic_energies = [1, 3, 5, 7, 9]  # 不同强度的魔法能量

for energy in magic_energies:
    if energy > 5:  # 一旦找到大于5的魔法能量
        print(f"💎 找到强大的魔法能量:{energy}点!")
        break       # 立即停止寻找,不再继续

# 输出结果:
# 💎 找到强大的魔法能量:7点!

continue 魔法 - 跳过当前,继续下一轮

continue魔法就像一个「魔法跳过大法」,能让魔法程序跳过当前这次施法,直接进入下一次循环。

python
# continue魔法示例:只收集偶数魔法能量
for i in range(1, 11):  # 遍历1到10的魔法能量
    if i % 2 != 0:      # 如果是奇数魔法能量
        continue        # 跳过当前,不收集奇数魔法能量
    print(f"✨ {i}是偶数魔法能量,已收集!")   # 只收集偶数魔法能量

# 输出结果:
# ✨ 2是偶数魔法能量,已收集!
# ✨ 4是偶数魔法能量,已收集!
# ✨ 6是偶数魔法能量,已收集!
# ✨ 8是偶数魔法能量,已收集!
# ✨ 10是偶数魔法能量,已收集!

🎮 魔法小测试:把上面的continue改成break,看看魔法输出会变成什么?

else 魔法在循环中的使用 - Python的独特魔法设计

这是Python魔法世界的一个「小秘密」!循环魔法也可以搭配else魔法使用。这个else魔法会在循环正常结束(没有被break中断)时自动激活。

示例:识别魔法水晶 - 循环的隐藏技能

我们可以用for-else魔法来判断一个魔法水晶是否为「纯净水晶」(只能被1和自身净化的水晶)!

python
# 循环中的else魔法示例:检查魔法水晶是否纯净
magic_crystal = 17  # 魔法水晶的纯度值
is_pure = True

for i in range(2, magic_crystal):  # 尝试用2到magic_crystal-1的数值净化
    if magic_crystal % i == 0:     # 如果能被净化
        is_pure = False  # 标记为不纯净
        break             # 立即停止检测
else:  # 如果循环正常结束(没有被break中断),说明是纯净水晶
    print(f"💎 {magic_crystal}是一颗纯净的魔法水晶!")

if not is_pure:  # 如果is_pure被标记为False
    print(f"🧪 {magic_crystal}不是纯净的魔法水晶。")

# 输出结果:
# 💎 17是一颗纯净的魔法水晶!

🧠 思考一下:如果把magic_crystal改成15,输出结果会是什么?为什么?

🎮 魔法师的挑战:今天你能得几颗星?

学习完流程控制魔法,让我们通过几个有趣的魔法挑战来巩固知识吧!✨

🌟 挑战1:魔法数字猜猜乐(基础版)

这是魔法学院里最受欢迎的「魔法数字猜猜乐」游戏,来试试你能不能最快猜对!

游戏规则

  1. 魔法书随机生成一个1到100之间的「神秘魔法数字」
  2. 你输入一个猜测的数字
  3. 魔法书会告诉你「猜大了」「猜小了」还是「猜对了」
  4. 重复步骤2和3,直到你猜对为止
  5. 最后,魔法书会告诉你「你用了多少次才猜对」

完整魔法咒语

python
# 挑战1:魔法数字猜猜乐
import random  # 导入魔法随机模块
magic_number = random.randint(1, 100)  # 生成1-100的随机魔法数字
guess_count = 0  # 记录猜测次数

while True:
    guess = int(input("请输入一个1到100之间的整数:"))
    guess_count += 1  # 每猜一次,次数加1
    
    if guess == magic_number:  # 如果猜对了
        print(f"🎉 恭喜你!神秘魔法数字就是{magic_number}。")
        print(f"你一共猜了{guess_count}次,魔法感知力不错!")
        break  # 结束游戏
    elif guess < magic_number:  # 如果猜小了
        print("🔍 猜小了,这个魔法数字比你想的要大一些!")
    else:  # 如果猜大了
        print("📈 猜大了,这个魔法数字比你想的要小一些!")

🌟🌟 挑战2:魔法阶乘计算

编写一个魔法程序,计算一个数的魔法阶乘。魔法阶乘的定义是:n! = n × (n-1) × (n-2) × ... × 1(0! = 1)。

完整魔法咒语

python
# 挑战2:魔法阶乘计算
n = int(input("请输入一个非负整数:"))
magic_factorial = 1

# 计算魔法阶乘
if n < 0:
    print("❌ 负数没有魔法阶乘。")
elif n == 0:
    print("✅ 0的魔法阶乘是1。")
else:
    for i in range(1, n + 1):  # 从1乘到n
        magic_factorial *= i  # 累积魔法能量
    print(f"✨ {n}的魔法阶乘是{magic_factorial}。")

🌟🌟🌟 挑战3:魔法乘法表

编写一个魔法程序,打印出漂亮的9x9魔法乘法表。这是每个魔法师都必须掌握的基础魔法知识!

提示:使用嵌套循环魔法,外层循环控制行数,内层循环控制每行的列数。

💡 魔法师修炼小贴士

  1. 缩进很重要:Python使用缩进(而不是大括号)来区分魔法咒语的结构,一定要保持一致的缩进风格!

  2. 避免魔法失控:在使用while循环魔法时,一定要确保循环条件最终会变为False,否则魔法会永远运行下去。

  3. 善用range()魔法range()魔法是for循环的好帮手,它可以帮你生成各种整数序列。

  4. 循环中的else魔法:这是Python魔法世界的独特特性,合理使用可以让你的魔法咒语更简洁、更优雅。

  5. 多练习,多思考:流程控制是魔法编程的核心,只有通过不断练习,才能熟练掌握各种魔法技巧!

🧠 魔法知识小测试

来测试一下你今天的魔法学习成果吧!

  1. 以下哪个不是Python的流程控制魔法? A. if B. for C. while D. echo

  2. if-elif-else魔法中,哪个部分是可选的? A. if 部分 B. elif 部分 C. else 部分 D. B和C

  3. 以下哪个魔法可以立即结束当前循环? A. break B. continue C. exit D. stop

  4. Python中,循环也可以有else魔法,它会在什么情况下激活? A. 循环开始前 B. 循环结束后 C. 循环正常结束且没有被break中断 D. 循环被break中断时

🎯 魔法知识要点总结

魔法咒语作用关键语法典型应用场景
if魔法基本条件判断if 条件:简单的是非选择
if-else魔法两种情况的选择if 条件:
else:
二选一的场景
if-elif-else魔法多条件判断if 条件1:
elif 条件2:
else:
魔法师等级、魔法能量评估等
嵌套if魔法复杂条件组合if代码块中再写if需要多重条件判断的场景
for循环魔法遍历序列for 变量 in 序列:处理魔法书、咒语列表中的每个元素
while循环魔法条件循环while 条件:不确定循环次数的场景
break魔法中断循环break提前结束循环
continue魔法跳过当前迭代continue跳过某些特定情况
循环else魔法循环正常结束时执行for/while ... else:判断纯净魔法水晶、寻找魔法元素等

🎉 今天的魔法学习就到这里啦! 下节课我们将学习「魔法函数与模块」,让我们的魔法咒语变得更加模块化和可复用。准备好了吗?💪


喜欢这个魔法教程吗?如果你觉得有帮助,别忘了给我点个赞哦!如果有任何魔法疑问,欢迎在评论区留言。让我们一起在Python的魔法世界里快乐成长!🧙‍♂️✨

© 2025 技术博客. All rights reserved by 老周有AI