
判断(条件)语句和循环语句是 Python 中控制程序执行流程的核心语法,前者根据条件决定执行哪段代码,后者重复执行某段代码,下面用通俗易懂的方式介绍:
一、判断语句(if/elif/else)
判断语句的核心是「满足条件就执行,不满足就跳过」,就像生活中「如果下雨就带伞,否则不带」的逻辑。
(一)布尔值
python
a = True
b = False
print(a, type(a))
print(b, type(b))
# 注意:一般不会直接赋值布尔值,经常通过比较赋值
# 布尔类型和比较运算符
# 比较运算符:>、<、==、!=、<=、>=
print(5 > 9) # 结果为False
print(5 < 9) # 结果为True
print(5 == 9) # 结果为False
print(5 != 9) # 结果为True
print(5 >= 9) # 结果为False
print(5 <= 9) # 结果为True
print('------------------')
# 逻辑运算符
# and 并且 有假则假
print(True and True) # True
print(True and False) # False
print(False and False) # False
# or 或者 有真则真
print(False or False) # False
print(False or True) # True
print(True or False) # True
# not 取反
print(not True) # False
print(not False) # True
# 具体示例
print(10 < 5 and 1 > 3) # 等同于 print(False and False) False
print(10 < 5 or 1 > 3) # 等同于 print(False or False) False
print(not 10 < 5 or 1 > 3) # True
print(not 10 < 5 and not 1 > 3) # True
(二)if 条件判断
1. 基本语法
python
① if 判断
if 条件表达式:
满足条件时执行的代码(注意缩进,通常4个空格)
②if...else...判断
if 条件表达式:
满足条件时执行的代码(注意缩进,通常4个空格)
else: # 可选,所有条件都不满足时执行
不满足所有条件时执行的代码
③if...elif(可以是多个)...else
if 条件表达式:
满足条件时执行的代码(注意缩进,通常4个空格)
elif 另一个条件表达式: # 可选,多个条件时用
满足该条件时执行的代码
else: # 可选,所有条件都不满足时执行
不满足所有条件时执行的代码
④嵌套
if 条件表达式1:
满足条件时执行的代码(注意缩进,通常4个空格)
if 条件表达式2:
满足条件1的情况下满足条件2时执行的代码(注意缩进,通常4个空格)
2. 示例
需求:编写程序,先获取商家星级再判断,判断商家4.8分以上,就可以进入五星商家争夺赛了
- 用 if 语句实现
python
# 注意:input 默认接收的是字符串
user_star = float(input("请输入您的星级:"))
if user_star >= 4.8:
print("恭喜您进入五星商家争夺赛!!!")
if user_star < 4.8:
print("很遗憾,你未能入选~")

- 用 if...else... 实现(此题也应用嵌套)
python
user_star = float(input("请输入您的星级:"))
# 当输入的星级不在0~5之间输入错误
if user_star < 0 or user_star >5:
print("您输入错误")
else:
if user_star >= 4.8:
print("恭喜您进入五星商家争夺赛!!!")
else:
print("很遗憾,你未能入选~")

- 用if...elif...else... 实现(包含嵌套)
需求:录入商家的星级(0-5),查询对应的等级
4.5-5.0:优秀,4.0-4.5:良好,3.5-4.0中等,0-3.5差
python
input_star = float(input('请输入您的星级:'))
# 确保输入的星级是正确的
if input_star < 0 or input_star > 5.0:
print("您输入的星级有误!")
else:
if 4.5 < input_star <=5:
print(f'您的星级是{input_star}:优秀')
elif 4.0 < input_star <= 4.5:
print(f'您的星级是{input_star}:良好')
elif 3.5 < input_star <= 4.0:
print(f'您的星级是{input_star}:中等')
else:
print(f'您的星级是{input_star}:差')

- * 可以省略不看(补充扩展,以后会再细说)
这里如果用户输入的是非数字的情况下会报错,怎么让程序不报错呢?(同时可以再思考一下:如果输入错误,怎么再次重新输入[与下面的循环有关])
python
try:
# 尝试获取并输入为浮点数
input_star = float(input('请输入您的星级:'))
# 确保输入的星级是正确的,校验星级范围
if input_star < 0 or input_star > 5.0:
print("您输入的星级有误!")
else:
# 根据星级区间判断
if 4.5 < input_star <= 5:
print(f'您的星级是{input_star}:优秀')
elif 4.0 < input_star <= 4.5:
print(f'您的星级是{input_star}:良好')
elif 3.5 < input_star <= 4.0:
print(f'您的星级是{input_star}:中等')
else:
print(f'您的星级是{input_star}:差')
# 捕获[非数字输入]导致的转换异常
except ValueError:
print("输入有误!请输入有效的数字,不要输入文字或符号!")

3. 关键说明
- 条件表达式的结果必须是
True(真)或False(假),常见的条件运算符:>、<、>=、<=、==(等于)、!=(不等于)、and(且)、or(或)、not(非)。 - 缩进是 Python 的语法规则,缩进相同的代码视为一个「代码块」,缩进错误会直接报错。
elif和else不能单独使用,必须跟在if后面。
4. 写个小程序(猜数字游戏)
需求:数字随机产生,范围1-10 有3次机会猜测数字,通过多层嵌套判断实现 每次猜不中,会提示大了或小了
python
# 导包
import random
# random 生成随机数 注意:[x, y]左闭右闭
rand_num = random.randint(1, 10)
print(f'内部人员知道随机数是{rand_num}')
guess_num = int(input("请输入您猜的数字(1-10): "))
if guess_num > 10 or guess_num < 0:
print("请输入1-10之间的数字")
guess_num = int(input("请输入您猜的数字(1-10): "))
if guess_num == rand_num:
print('恭喜您猜对啦')
else:
if guess_num > rand_num:
print('猜大了')
else:
print('猜小了')
guess_num = int(input("还有两次机会,请输入您猜的数字: "))
if guess_num == rand_num:
print('恭喜您猜对啦')
else:
if guess_num > rand_num:
print('猜大了')
else:
print('猜小了')
guess_num = int(input("还有一次机会,请输入您猜的数字: "))
if guess_num == rand_num:
print('恭喜您猜对啦')
elif guess_num > rand_num:
print('猜大了,三次机会已用完')
else:
print('猜小了,三次机会已用完')
else:
if guess_num == rand_num:
print('恭喜您猜对啦')
else:
if guess_num > rand_num:
print('猜大了')
else:
print('猜小了')
guess_num = int(input("还有两次机会,请输入您猜的数字: "))
if guess_num == rand_num:
print('恭喜您猜对啦')
else:
if guess_num > rand_num:
print('猜大了')
else:
print('猜小了')
guess_num = int(input("还有一次机会,请输入您猜的数字: "))
if guess_num == rand_num:
print('恭喜您猜对啦')
elif guess_num > rand_num:
print('猜大了,三次机会已用完')
else:
print('猜小了,三次机会已用完')

二、循环语句
循环语句用于「重复执行一段代码」,Python 主要有两种循环:for 循环(遍历可迭代对象)和 while 循环(满足条件就循环)。
(一)while 循环(条件循环)
适合「未知循环次数」的场景,只要条件为 True,就一直循环。
1. 基本语法
python
while 条件表达式:
满足条件时重复执行的代码
# 必须有终止条件,否则会无限循环!
2. 示例
python
# 需求:while 循环计算1-10的和
# 计算 1-10 的累加和
sum_num = 0
i = 1
while i <= 10:
sum_num += i # 等价于 sum_num = sum_num + i
i += 1 # 每次循环 i 加 1,避免无限循环
print(sum_num) # 输出 55
python
# 九九乘法表
# while 打印九九乘法表
# i 代表行数
i = 1
while i <= 9:
# j代表列数
j = 1
# 第一行(i = 1),有一列(j = 1)
# 第二行(i = 2),有两列(j = 2(相当于等于i))
# 第三行(i = 3),有三列(j = 3(相当于等于i))
# 第三行(i = 4),有三列(j = 4(相当于等于i))
# 第三行(i = 5),有三列(j = 5(相当于等于i))
# 第三行(i = 6),有三列(j = 6(相当于等于i))
# 第三行(i = 7),有三列(j = 7(相当于等于i))
# 第三行(i = 8),有三列(j = 8(相当于等于i))
# 第三行(i = 9),有三列(j = 9(相当于等于i))
while j <= i:
# 默认print换行,我们要做(九九乘法)表,所以用制表符
print(f'{j}*{i}={j*i}', end='\t')
j += 1
# 这里对照着 i,每一行结束了要换行
print()
# 外层循环控制条件
i += 1
# 可以自己试试敲矩形和三角形

- 写个小程序(猜数字游戏)
需求:猜1-100数字,共5次机会,提示:大了、小了、对了
python
# # 需求:猜1-10数字,共5次机会,提示:大了、小了、对了
import random
i = 0
rand_num = random.randint(1, 100)
# 直到猜对才停止,这里改为while True:
while i <= 5:
i += 1
guess_num = int(input("请输入您猜的整数(要求1-100):"))
if 0 <= guess_num <= 100:
if guess_num == rand_num:
print(f"恭喜您第{i}次猜对")
break
else:
if guess_num > rand_num:
if i == 5:
print("很遗憾,没猜对")
break
print(f'猜大了,您已经猜了{i}次了,还有{5-i}次机会,请重新猜')
else:
if i == 5:
print("很遗憾,没猜对")
break
print(f'猜小了,您已经猜了{i}次了,还有{5-i}次机会,请重新猜')
else:
print("您输入数字无效,请输入在1-100之间的数字")

(二) for 循环(遍历循环)
适合「已知循环次数」的场景,比如遍历列表、字符串、数字序列等。
1. 基本语法
python
for 变量 in 可迭代对象(列表/字符串/范围等):
每次循环执行的代码
python
"""
range(x, y, z)格式说明如:
x: 起始数字
y: 结束标记,真正结束数字是 y - 1
z: 步长, 1的时候可以省略
"""
for 变量 in range(x,y,z):
每次循环执行的代码
2. range
python
"""
range(x, y, z)格式说明如:
x: 起始数字
y: 结束标记,真正结束数字是 y - 1
z: 步长, 1的时候可以省略
左闭右开
"""
# 打印1-10
for i in range(0, 10, 1):
print(i, end='\t')
print()
# range(x, y, z),x=0,z=1时可以省略
for i in range(10):
print(i, end='\t')
print()
# 打印1~10 中所有的偶数
for i in range(2, 11, 2):
print(i, end='\t')
print()
# 打印1~10 中所有的奇数
for i in range(1, 11, 2):
print(i, end='\t')
print()
# 打印1~10 中所有的偶数之和
# 循环外定义初始变量
sum = 0
for i in range(2, 11, 2):
# 循环内累加
sum += i
print(sum, end='\t')
print()
# 打印1~10 中所有的偶数之和
# 循环外定义初始变量
sumOdd = 0
for i in range(1, 11, 2):
sumOdd += i
print(sumOdd)

3. for(实现九九乘法表)
python
# for 循环核心功能就是遍历数据集
# 需求:已知字符串"clara is a beauty",要求把每个字打印到控制台
# 计算一共有多少个字符
# 循环外定义初始变量
# 循环内计数
# 循环外使用最终结果
sentence = 'clara is a beauty'
for char in sentence:
print(char, end=' ')
print('\n')
# 2. 用for循环计算一共多少个字符
count = 0
sentence = 'clara is a beauty'
for char in sentence:
count += 1
print(char, end=' ')
print(f'一共有{count}个字符')
# 3. 计算一共有多少个单词
countWord = 0
for char in sentence:
if char == ' ':
countWord += 1
print(char, end=' ')
print(f'一共有{countWord+1}个单词')

python
# 实现九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(f'{j}*{i}={j*i}', end='\t')
print()

4. 循环控制关键字
break:立即终止当前循环,跳出循环体。
python
for i in range(5):
if i == 3:
break # 当 i=3 时终止循环
print(i) # 输出 0、1、2
continue:跳过当前循环的剩余代码,直接进入下一次循环。
python
for i in range(5):
if i == 3:
continue # 跳过 i=3 的打印
print(i) # 输出 0、1、2、4
break 在 while 和 for 循环中的功能是一样的,但是 continue 在两者的用法有区别:
- while 循环中 i 的更新方式 手动通过i +=1更新,continue前 / 后都能更
- for 循环中 i 自动从range取,手动改 i 无效,continue直接取下一个
python
# 需求:数1~20跳过2、5、6
i = 0
while i < 20:
i += 1
if i == 2 or i == 5 or i == 6:
continue
print(f'数到{i}了', end=' ')
print()
for i in range(1, 21):
if i == 2 or i == 5 or i == 6:
continue
print(f'数到{i}了', end=' ')

总结
- 判断语句 :用
if/elif/else实现「条件分支」,核心是根据条件执行不同代码块,注意缩进和条件表达式的布尔结果。 - 循环语句 :
for适合遍历可迭代对象(已知次数),while适合条件循环(未知次数);break终止循环,continue跳过当前轮次,循环必须有终止条件避免无限循环。 - 缩进是 Python 区分代码块的关键,判断和循环的代码块都必须缩进(通常4个空格)。