4. 分支和循环:if判断语句、运算符、if-else语句、while循环、for循环、break、continue
各位同学,今天我们来聊聊编程里的「岔路口」和「绕圈圈」。说白了,就是让代码学会做决定,以及重复干一件事。
我刚开始学Python时,觉得这玩意儿特简单——不就是从上往下执行嘛。但后来发现,真正让程序变聪明的,恰恰是这些控制结构。没有它们,代码就是一条道走到黑,毫无灵魂。
4.1 运算符:判断的基础
在讲if之前,得先说说运算符。因为判断的本质,就是比较两个东西。
Python里的运算符分几类,我挑最常用的说:
- 比较运算符:
==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于) - 逻辑运算符:
and(与)、or(或)、not(非) - 成员运算符:
in、not in(判断是否在序列里)
举个例子你就明白了:
age = 18
print(age >= 18) # True
print(age == 18) # True
print(age != 20) # True
# 逻辑运算
print(age > 10 and age < 20) # True
print(not age > 20) # True
# 成员运算
fruits = ['苹果', '香蕉', '橘子']
print('苹果' in fruits) # True
= 和 == 搞混。= 是赋值,== 才是判断相等。写错的话,Python会直接报错,但有些语言不会——那才是真正的坑。
4.2 if判断语句:让代码做选择
if语句,说白了就是「如果……就……」。它的结构很简单:
if 条件:
执行代码
注意那个冒号,还有缩进。Python用缩进来表示代码块,这是它的特色,也是新手最容易翻车的地方。
来看个实际例子:
score = 85
if score >= 60:
print('恭喜,及格了!')
运行结果:恭喜,及格了!
如果score是50呢?那就什么都不输出。因为条件不满足。
4.3 if-else语句:两条路
有时候我们需要「二选一」。比如:及格了说恭喜,没及格说加油。
score = 45
if score >= 60:
print('恭喜,及格了!')
else:
print('别灰心,下次加油!')
运行结果:别灰心,下次加油!
if-else就是两条路,非此即彼。你想想看,生活中大部分判断其实都是这种二选一。
4.4 if-elif-else:多条路
如果判断条件不止两个呢?比如成绩评级:90以上优秀,80以上良好,60以上及格,否则不及格。
这时候就需要 elif 了:
score = 88
if score >= 90:
grade = '优秀'
elif score >= 80:
grade = '良好'
elif score >= 60:
grade = '及格'
else:
grade = '不及格'
print(f'你的等级是:{grade}')
运行结果:你的等级是:良好
注意顺序——从上往下判断,一旦满足某个条件,后面的就不执行了。所以要把最严格的条件放前面。
4.5 while循环:重复直到条件不满足
循环,就是让代码反复执行。while循环的语法:
while 条件:
执行代码
只要条件为True,就一直执行。直到条件变成False才停下。
举个最简单的例子:
count = 1
while count <= 5:
print(f'第{count}次循环')
count += 1 # 别忘了更新条件,否则死循环
运行结果:
第1次循环
第2次循环
第3次循环
第4次循环
第5次循环
4.6 for循环:遍历序列
for循环更适合遍历一个序列(列表、字符串、元组等)。语法:
for 变量 in 序列:
执行代码
看例子:
fruits = ['苹果', '香蕉', '橘子']
for fruit in fruits:
print(f'我喜欢吃{fruit}')
运行结果:
我喜欢吃苹果
我喜欢吃香蕉
我喜欢吃橘子
如果想循环指定次数,配合 range() 函数:
for i in range(5): # 0,1,2,3,4
print(f'第{i}次')
range(5) 生成0到4的整数。注意,不包括5。这是Python的「左闭右开」原则。
4.7 break:跳出循环
有时候我们需要提前结束循环。比如:找到第一个满足条件的元素后,就不找了。
numbers = [3, 7, 2, 9, 5]
for num in numbers:
if num > 5:
print(f'找到第一个大于5的数:{num}')
break # 跳出整个循环
运行结果:找到第一个大于5的数:7
注意,break只跳出当前所在的循环。如果是嵌套循环,它只跳出最内层。
4.8 continue:跳过本次循环
continue和break不同。break是「不干了,走人」,continue是「这次算了,继续下一轮」。
for num in range(1, 6):
if num == 3:
continue # 跳过3,继续下一次
print(num)
运行结果:
1
2
4
5
3被跳过了,但循环没有终止。
4.9 知识体系图
下面这张图帮你理清本章的知识结构:
4.10 综合示例:猜数字游戏
把今天学的知识串起来,写个小游戏:
import random
# 生成1-100的随机数
target = random.randint(1, 100)
guess = None
attempts = 0
print('猜数字游戏开始!范围1-100')
while guess != target:
try:
guess = int(input('请输入你的猜测:'))
attempts += 1
if guess < target:
print('猜小了,再大一点')
elif guess > target:
print('猜大了,再小一点')
else:
print(f'恭喜你猜对了!用了{attempts}次')
break # 其实while条件已经会退出,但用break更明确
except ValueError:
print('请输入有效的数字!')
continue # 跳过本次,重新输入
print('游戏结束')
这个例子用到了if-elif-else、while循环、break、continue。你想想看,如果不用这些控制结构,这个游戏能写出来吗?
好了,分支和循环就讲到这里。这些东西看着简单,但用好了,你的代码就有了「灵魂」。多写多练,慢慢就熟练了。
可可精品资料库