第5天:循环 —— 让程序重复执行

🎯 今日目标

  • 掌握 for 循环的基本用法

  • 学会使用 range() 生成数字序列

  • 掌握 while 循环的用法

  • 理解 breakcontinue 的作用

  • 避免写出"死循环"

  • 能够选择合适的循环解决实际问题


🔁 一、for 循环:遍历序列

当你需要对一组数据中的每个元素做同样的操作 时,用 for 循环。

1.1 遍历字符串

python

复制代码
for ch in "Python":
    print(ch)

运行结果:

text

复制代码
P
y
t
h
o
n

for 循环会依次取出字符串中的每一个字符,赋值给变量 ch,然后执行缩进的代码块。

1.2 遍历列表

列表是Python中常用的数据类型(后面会详细讲),现在先简单了解它的用法。

python

复制代码
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
    print(f"我喜欢吃{fruit}")

运行结果:

text

复制代码
我喜欢吃苹果
我喜欢吃香蕉
我喜欢吃橘子

1.3 使用 range() 生成数字序列

range() 是Python内置函数,专门用来生成一系列整数。它有三种用法:

用法 示例 生成的序列
range(stop) range(5) 0, 1, 2, 3, 4(从0开始,不包含5)
range(start, stop) range(2, 6) 2, 3, 4, 5(包含start,不包含stop)
range(start, stop, step) range(1, 10, 2) 1, 3, 5, 7, 9(step是步长)

示例1:打印0到4

python

复制代码
for i in range(5):
    print(i)

运行结果:

text

复制代码
0
1
2
3
4

示例2:打印1到5

python

复制代码
for i in range(1, 6):
    print(i)

运行结果:

text

复制代码
1
2
3
4
5

示例3:打印1,3,5,7,9

python

复制代码
for i in range(1, 10, 2):
    print(i)

运行结果:

text

复制代码
1
3
5
7
9

示例4:倒序打印10到1

python

复制代码
for i in range(10, 0, -1):
    print(i)

运行结果:

text

复制代码
10
9
8
7
6
5
4
3
2
1

💡 range(stop) 是最常用的,尤其是需要循环固定次数时。注意它从0开始,到 stop-1 结束。

1.4 计算1到100的总和

python

复制代码
total = 0
for i in range(1, 101):
    total = total + i   # 也可以写成 total += i
print(f"1到100的总和是: {total}")

运行结果:

text

复制代码
1到100的总和是: 5050

💡 total += itotal = total + i 的简写,Python 还支持 -=*=/= 等。


🔁 二、while 循环:条件满足时一直执行

当你不知道需要循环多少次,只知道什么时候停止 时,用 while 循环。

2.1 基本语法

python

复制代码
while 条件:
    条件为真时重复执行的代码

只要条件为 True,循环就会一直执行。所以一定要在循环体内改变条件的值,否则会无限循环。

2.2 简单示例:打印1到5

python

复制代码
i = 1
while i <= 5:
    print(i)
    i = i + 1   # 或 i += 1

运行结果:

text

复制代码
1
2
3
4
5

2.3 不断询问用户输入,直到正确为止

python

复制代码
password = ""
while password != "python123":
    password = input("请输入密码: ")
print("密码正确,欢迎进入系统!")

运行过程示例:

text

复制代码
请输入密码: 123
请输入密码: abc
请输入密码: python123
密码正确,欢迎进入系统!

💡 这个例子展示了 while 的经典用法:不知道用户第几次才能输对,所以一直循环直到条件满足。


🛑 三、break:提前结束循环

break 可以立即终止当前所在的循环,不管循环条件是否还满足。

python

复制代码
# 查找第一个能被7整除的数
for i in range(1, 100):
    if i % 7 == 0:
        print(f"第一个能被7整除的数是 {i}")
        break   # 找到后立即退出循环

运行结果:

text

复制代码
第一个能被7整除的数是 7

如果不加 break,循环会继续检查后面的数,浪费资源。

while 结合使用

python

复制代码
# 猜数字游戏(简化版)
secret = 7
while True:          # 无限循环,依靠 break 退出
    guess = int(input("猜一个数字(1-10): "))
    if guess == secret:
        print("恭喜,猜对了!")
        break
    else:
        print("猜错了,再试试")

⚠️ while True 是故意制造无限循环,但必须确保里面有 break 能退出。


⏭️ 四、continue:跳过本次循环,继续下一次

continue忽略本次循环中剩余的代码,直接进入下一次循环

python

复制代码
# 打印1到10之间的奇数(跳过偶数)
for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i)

运行结果:

text

复制代码
1
3
5
7
9

i 是偶数时,continue 会跳过 print(i),直接进入下一个 i


⚠️ 五、避免死循环

死循环 是指条件永远为 True,且没有 break 退出的循环。一旦出现,程序会永远运行下去(只能强制关闭终端)。

错误示例

python

复制代码
i = 1
while i <= 5:
    print(i)
    # 忘记写 i = i + 1,所以 i 永远是 1,条件永远为 True

后果 :程序会无限输出 1,直到你按 Ctrl+C 强制终止。

如何避免

  • 确保循环条件最终会变为 False

  • 使用 break 时,确保它最终会被执行到

  • 不要在应该更新条件的地方写错逻辑


🧪 六、循环嵌套(循环里面套循环)

循环里面可以再写循环,这叫嵌套循环

打印乘法口诀表

python

复制代码
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}×{i}={i*j}", end="\t")
    print()   # 换行

运行结果:

text

复制代码
1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
1×4=4	2×4=8	3×4=12	4×4=16	
1×5=5	2×5=10	3×5=15	4×5=20	5×5=25	
1×6=6	2×6=12	3×6=18	4×6=24	5×6=30	6×6=36	
1×7=7	2×7=14	3×7=21	4×7=28	5×7=35	6×7=42	7×7=49	
1×8=8	2×8=16	3×8=24	4×8=32	5×8=40	6×8=48	7×8=56	8×8=64	
1×9=9	2×9=18	3×9=27	4×9=36	5×9=45	6×9=54	7×9=63	8×9=72	9×9=81	

💡 外层循环 i 控制行数,内层循环 j 控制每行打印的列数。end="\t" 让每个结果之间用制表符分隔,而不是换行。


🧪 七、综合示例:猜数字游戏(完整版)

python

复制代码
import random

# 生成1-100之间的随机数
secret = random.randint(1, 100)
attempts = 0

print("=== 猜数字游戏 ===")
print("我已经想好了一个1-100之间的数字,你猜是多少?")

while True:
    guess = int(input("请输入你的猜测: "))
    attempts += 1
    
    if guess < secret:
        print("太小了,再大一点")
    elif guess > secret:
        print("太大了,再小一点")
    else:
        print(f"恭喜!你用了 {attempts} 次猜对了,答案就是 {secret}")
        break

运行示例:

text

复制代码
=== 猜数字游戏 ===
我已经想好了一个1-100之间的数字,你猜是多少?
请输入你的猜测: 50
太小了,再大一点
请输入你的猜测: 75
太大了,再小一点
请输入你的猜测: 62
恭喜!你用了 3 次猜对了,答案就是 62

🐛 八、新手常见错误及解决

错误现象 错误代码示例 解决方法
死循环(程序不停止) i = 1 while i <= 5: print(i) 在循环内加上 i += 1
for 循环忘记缩进 for i in range(5): print(i)(没有缩进) print 前加4个空格
breakcontinue 写在循环外 if x > 5: break 但没有循环 只能在 forwhile 循环体内使用
range 的结束值理解错误 for i in range(5): 以为会输出1-5 记住 range(5) 输出 0,1,2,3,4,总共5个数
= 而不是 == 作为循环条件 while x = 5: 改为 while x == 5:
忘记转换输入类型 guess = input("数字: ") 然后在循环里和整数比较 int(input(...))

错误演示:死循环

python

复制代码
count = 0
while count < 3:
    print("循环中")
    # 忘记 count += 1

按下 Ctrl+C 可以强制终止程序。

正确做法:一定要有改变条件的方式

python

复制代码
count = 0
while count < 3:
    print("循环中")
    count += 1   # 不加这行就会死循环

🎯 今日总结

今天你学会了:

  • for 循环遍历字符串、列表,以及与 range() 配合

  • while 循环在条件为真时重复执行

  • break 提前终止循环,continue 跳过本次循环

  • 如何避免死循环

  • 嵌套循环(循环里套循环)

  • 编写了猜数字游戏

相关推荐
聆风吟º1 小时前
【Python编程日志】Python基础数据类型完整梳理
开发语言·python·数据类型
盼小辉丶1 小时前
OpenCV-Python实战(28)——OpenCV计算摄影从HDR图像融合到全景拼接
python·opencv·计算机视觉
shchojj2 小时前
ChatGPT Prompt Engineering for Developers - Expanding
开发语言·python·prompt
俊俊谢2 小时前
【python】FastAPI 实时推送:从 SSE 到 WebSocket
python·websocket·fastapi
stephon_1003 小时前
Agent 接入 MCP 后上下文爆炸、工具选串?一种“按需激活“的工具加载方案(含实现)
人工智能·python·ai
TickDB3 小时前
统一行情 API 查 A 股、港股、美股和数字货币:code=0 不代表 symbol 一个没少
人工智能·python·websocket·mcp·行情数据 api
大貔貅喝啤酒10 小时前
Python Requests库教程
自动化测试·python·requests库
copyer_xyf11 小时前
LangChain 调用 LLM
后端·python·agent
copyer_xyf11 小时前
Prompt 组织管理
后端·python·agent