本文为Python学习第三天的内容,涵盖拦截判断与漏斗式判断、while循环、循环控制语句(break/continue)以及for循环的深入理解。适合零基础入门学习,建议配合代码实操。
一、拦截判断和漏斗式判断
在循环中,我们经常需要对用户输入或数据进行多条件判断。根据判断逻辑的不同,可以分为拦截式和漏斗式两种写法。
1.1 拦截式判断
特点:每个条件独立判断,使用多个 if 语句,条件之间互不影响。
while True:
a = int(input())
if a > 0:
print("正数,重新输入")
if a < 0:
print("负数,重新输入")
if a == 0:
print("是0")
break
注意:拦截式中,如果多个条件同时满足(虽然本例中不会),会执行多个分支。每个
if都会进行判断。
1.2 漏斗式判断
特点:使用 if-elif-else 结构,条件依次判断,一旦某个条件满足,后续条件不再判断,像漏斗一样层层筛选。
while True:
a = int(input())
if a > 0:
print("正数,重新输入")
elif a < 0:
print("负数,重新输入")
else:
print("是0")
break
1.3 两种方式的对比
| 对比项 | 拦截式 | 漏斗式 |
|---|---|---|
| 结构 | 多个独立的 if | if-elif-else 串联 |
| 执行效率 | 每个条件都判断 | 满足一个后跳过其余 |
| 适用场景 | 条件之间可能同时成立 | 条件之间互斥,只需一个成立 |
| 推荐程度 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
开发建议:在条件互斥的情况下,优先使用漏斗式,效率更高,逻辑更清晰。
二、while循环
while 循环是Python中最基础的循环结构,当条件为真时重复执行代码块。
2.1 while计数循环
三要素:计数器初始化、判断条件、计数器改变。三者缺一不可,否则容易出现死循环或循环不执行。
# 打印1~5的数字
count = 1 # 1. 计数器初始化
while count <= 5: # 2. 判断条件
print(count)
count += 1 # 3. 计数器改变(count = count + 1)
执行流程:
-
初始化
count = 1 -
判断
count <= 5,成立则执行循环体 -
打印并自增
-
回到步骤2,直到
count = 6时条件不成立,循环结束
2.2 while的死循环
当条件永远为 True 时,循环将无限执行,称为死循环。通常需要配合 break 语句在特定条件下退出。
while True:
user_input = input("请输入'quit'退出程序:")
if user_input == "quit":
print("程序已退出")
break
print(f"你输入的是:{user_input}")
注意:死循环本身不是错误,在需要持续监听用户输入、服务器运行等场景下非常有用。但一定要确保有退出机制(如
break),否则程序将永远无法结束。
三、循环控制语句
循环控制语句用于改变循环的正常执行流程。
3.1 break 语句
作用:立即终止整个循环,跳出循环体,执行循环后面的代码。
# 查找列表中第一个负数
numbers = [3, 5, 8, -2, 9, 1]
for num in numbers:
if num < 0:
print(f"找到第一个负数:{num}")
break
3.2 continue 语句
作用:跳过当前循环的剩余代码,直接进入下一次循环判断。
# 打印1~10中的奇数(跳过偶数)
for i in range(1, 11):
if i % 2 == 0: # 如果是偶数
continue # 跳过本次循环,不执行下面的print
print(i)
3.3 break 与 continue 对比
| 语句 | 作用 | 使用场景 |
|---|---|---|
break | 终止整个循环 | 找到目标后提前退出 |
continue | 跳过当前迭代 | 过滤不符合条件的项 |
四、for循环
for 循环是Python中最常用的循环结构,特别适合遍历序列(字符串、列表、元组等)。
4.1 range()函数
range() 是 for 循环的黄金搭档,用于生成一个整数序列。
| 用法 | 说明 | 示例 |
|---|---|---|
range(stop) | 从0开始,到stop-1结束 | range(5) → 0,1,2,3,4 |
range(start, stop) | 从start开始,到stop-1结束 | range(1,5) → 1,2,3,4 |
range(start, stop, step) | 带步长,step为间隔 | range(0,10,2) → 0,2,4,6,8 |
# 基础用法:打印1到4
for i in range(1, 5):
print(i)
# 带步长:打印0到20的偶数
for i in range(0, 21, 2):
print(i)
4.2 for...else 循环
这是Python中一个独特且实用的语法结构。
4.2.1 如果for正常结束,必须执行else语句
当 for 循环没有被 break 中断,正常遍历完所有元素后,会执行 else 块。
for i in range(1, 5):
print(i)
else:
print("for正常结束了...")
输出:
1
2
3
4
for正常结束了...
实际应用:查找字符
str1 = "abdefg"
for i in str1:
if i == 'c':
print("找到了")
break
else:
print("没找到")
# 输出:没找到(因为字符串中没有'c',循环正常结束,执行else)
4.2.2 如果for异常结束,不会执行else语句
当 for 循环被 break 中断时,else 块不会执行。
for i in range(20):
if i % 7 == 0 and i != 0:
break # 遇到第一个能被7整除的数就退出
else:
# 不会执行这里,因为循环被break异常结束
print("没有可以被7整除的数字")
核心理解:
else的触发条件是"循环正常跑完",而不是"循环条件不满足"。一旦被break,就属于异常结束。
五、循环嵌套与综合案例
5.1 循环嵌套
循环内部再写循环,称为嵌套循环。外层循环执行一次,内层循环执行一轮。
# 打印九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end="\t")
print() # 换行
5.2 综合案例:猜数字游戏
综合运用今天所学知识:
import random
target = random.randint(1, 100)
count = 0
while True:
guess = int(input("请输入你猜的数字(1-100):"))
count += 1
if guess > target:
print("猜大了,再试试")
elif guess < target:
print("猜小了,再试试")
else:
print(f"恭喜你猜对了!答案就是{target},你一共猜了{count}次")
break
六、总结

Day04主要学习了Python中的循环结构与流程控制。重点掌握:
| 知识点 | 核心内容 |
|---|---|
| 拦截式 vs 漏斗式 | 互斥条件优先用漏斗式(if-elif-else) |
| while循环 | 计数循环三要素;死循环配合 break 使用 |
| break | 终止整个循环 |
| continue | 跳过当前迭代 |
| range() | range(start, stop, step) 生成整数序列 |
| for...else | 循环正常结束才执行 else,被 break 则跳过 |
下一篇将继续学习Python的数据结构(列表、元组、字典、集合),敬请期待!
练习建议:动手敲一遍文中的所有代码,尤其是
for...else的两种结束情况,只有亲自运行过才能真正理解"正常结束"与"异常结束"的区别。
&spm=1001.2101.3001.5002&articleId=163890571&d=1&t=3&u=a15a3dd2058048f584cf5d81e75972b7)
599

被折叠的 条评论
为什么被折叠?



