Python判断及循环

判断(条件)语句和循环语句是 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分以上,就可以进入五星商家争夺赛了

  1. 用 if 语句实现
python 复制代码
# 注意:input 默认接收的是字符串
user_star = float(input("请输入您的星级:"))
if user_star >= 4.8:
    print("恭喜您进入五星商家争夺赛!!!")
if user_star < 4.8:
    print("很遗憾,你未能入选~")
  1. 用 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("很遗憾,你未能入选~")
  1. 用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}:差')
  1. * 可以省略不看(补充扩展,以后会再细说)

这里如果用户输入的是非数字的情况下会报错,怎么让程序不报错呢?(同时可以再思考一下:如果输入错误,怎么再次重新输入[与下面的循环有关])

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 的语法规则,缩进相同的代码视为一个「代码块」,缩进错误会直接报错。
  • elifelse 不能单独使用,必须跟在 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. 写个小程序(猜数字游戏)

需求:猜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 在两者的用法有区别:

  1. while 循环中 i 的更新方式 手动通过i +=1更新,continue前 / 后都能更
  2. 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=' ')

总结

  1. 判断语句 :用 if/elif/else 实现「条件分支」,核心是根据条件执行不同代码块,注意缩进和条件表达式的布尔结果。
  2. 循环语句for 适合遍历可迭代对象(已知次数),while 适合条件循环(未知次数);break 终止循环,continue 跳过当前轮次,循环必须有终止条件避免无限循环。
  3. 缩进是 Python 区分代码块的关键,判断和循环的代码块都必须缩进(通常4个空格)。
相关推荐
前进的李工2 小时前
LangChain使用之Model IO(提示词模版之ChatPromptTemplate)
java·前端·人工智能·python·langchain·大模型
Fairy要carry2 小时前
面试-Agent上下文过载、步骤混乱的问题
开发语言·python
ywf12152 小时前
Spring Integration + MQTT
java·后端·spring
轩情吖2 小时前
MySQL之索引
android·数据库·mysql·b+树·索引·page·
liuyao_xianhui2 小时前
优选算法_两数之和_位运算_C++
java·开发语言·数据结构·c++·算法·链表·动态规划
今儿敲了吗2 小时前
python基础学习笔记第五章——容器
笔记·python·学习
李白的粉2 小时前
基于springboot的知识管理系统
java·spring boot·毕业设计·课程设计·知识管理系统·源代码
大傻^2 小时前
Spring AI 2.0 多模型提供商配置:OpenAI、Gemini、Anthropic 与 Ollama 深度集成
java·人工智能·spring·springai
爱丽_2 小时前
JVM 堆参数怎么设:先建立内存基线,再谈性能优化
java·jvm·性能优化