【Python实战进阶】7、Python条件与循环实战详解:从基础语法到高级技巧

前言

条件与循环是Python编程的"基本功",更是控制程序逻辑的核心------如同盖房子的地基,决定了代码的简洁度、可读性和效率。很多新手入门时容易陷入"语法会用但用不好"的困境,比如多层嵌套冗余、循环效率低下等。

本文结合mermaid图解和实战案例,从基础语法到高级技巧,再到企业级实战,一站式拆解Python条件与循环,帮你从"会用"到"精通"!

一、条件语句:分支逻辑的核心

条件语句通过判断表达式真假,让程序执行不同代码块,核心是ifelifelse的灵活运用。

1. 核心语法与关键代码

(1)基础用法
python 复制代码
# 单条件判断
age = 18
if age >= 18:
    print("您已成年")

# if-else 二分支
score = 85
if score >= 60:
    print("及格")
else:
    print("不及格")

# if-elif-else 多分支
score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")
(2)条件表达式(三元运算符)

简洁实现二分支逻辑,避免冗余代码:

python 复制代码
# 传统写法→简洁写法
status = "成年" if age >= 18 else "未成年"
result = "及格" if score >= 60 else "不及格"
(3)复杂条件组合

结合逻辑运算符(and/or/not)和成员运算符(in/not in):

python 复制代码
# 逻辑运算符
age = 25
has_license = True
if age >= 18 and has_license:
    print("可以开车")

# 成员运算符
fruits = ["apple", "banana"]
if "apple" in fruits:
    print("苹果在列表中")

2. 执行流程mermaid图解

3. 关键注意事项

  • ❌ 不可加括号:Python不支持if (age >= 18)这种写法;
  • ✅ 必须加冒号:if/elif/else末尾必须跟:
  • ✅ 显性判断:除布尔类型外,建议写完整条件(如if i != 0而非if i)。

二、循环语句:重复执行的艺术

循环语句用于重复执行代码块,Python核心是for循环(遍历可迭代对象)和while循环(满足条件持续执行)。

1. 核心语法与关键代码

(1)for循环(推荐遍历场景)
python 复制代码
# 遍历列表/字符串
fruits = ["apple", "banana"]
for fruit in fruits:
    print(f"喜欢{fruit}")

# 遍历字典
student = {"name": "Alice", "age": 20}
for k, v in student.items():
    print(f"{k}: {v}")

# 获取索引(enumerate)
for index, fruit in enumerate(fruits, start=1):
    print(f"第{index}个水果:{fruit}")

# 固定次数循环(range)
for i in range(1, 6, 2):  # 1,3,5
    print(i)
(2)while循环(推荐条件场景)
python 复制代码
# 基本用法
count = 0
while count < 5:
    print(f"计数:{count}")
    count += 1

# 交互式场景(无固定迭代次数)
while True:
    age = input("请输入年龄(输入q退出):")
    if age == "q":
        break
    try:
        print(f"您的年龄:{int(age)}")
        break
    except ValueError:
        print("请输入有效数字")
(3)循环控制(break/continue/pass)
python 复制代码
# break:终止整个循环
for i in range(10):
    if i == 5:
        break  # 输出0-4
    print(i)

# continue:跳过当前迭代
for i in range(10):
    if i % 2 == 0:
        continue  # 输出1,3,5,7,9
    print(i)

# pass:占位符(无实际操作)
for i in range(5):
    if i == 2:
        pass  # 后续补充逻辑
    print(i)

2. 循环适用场景mermaid对比

3. 效率对比

  • for循环(配合range):由C语言实现,效率更高;
  • while循环(如i += 1):涉及Python对象创建/删除,效率较低。

三、高级技巧:让代码更简洁高效

1. 列表推导式(条件+循环复用)

一行实现"循环+条件"逻辑,替代冗余代码:

python 复制代码
# 基础:生成平方列表
squares = [x**2 for x in range(10)]  # [0,1,4,...,81]

# 带条件:筛选偶数平方
even_squares = [x**2 for x in range(10) if x % 2 == 0]

# 嵌套循环:生成元素对
pairs = [(x, y) for x in range(3) for y in range(3)]

2. 列表推导式逻辑转换mermaid图解

3. zip():同时遍历多个序列

python 复制代码
names = ["Alice", "Bob"]
ages = [25, 30]
cities = ["Beijing", "Shanghai"]

# 遍历多序列
for name, age, city in zip(names, ages, cities):
    print(f"{name},{age}岁,居住在{city}")

# 生成字典
name_age = dict(zip(names, ages))  # {'Alice':25, 'Bob':30}

四、实战案例:从练习到生产

1. 学生成绩管理系统(核心代码)

python 复制代码
def student_grade_system():
    students = []
    while True:
        print("\n1.添加成绩 2.查看成绩 3.成绩分析 4.退出")
        choice = input("选择操作:")
        
        if choice == "1":
            name = input("姓名:")
            while True:
                try:
                    score = float(input("成绩(0-100):"))
                    if 0 <= score <= 100:
                        students.append({"name": name, "score": score})
                        break
                    print("成绩需在0-100之间")
                except ValueError:
                    print("请输入有效数字")
        
        elif choice == "3":
            if not students:
                print("无数据")
                continue
            scores = [s["score"] for s in students]
            print(f"平均分:{sum(scores)/len(scores):.2f}")
            print(f"最高分:{max(scores)},最低分:{min(scores)}")

if __name__ == "__main__":
    student_grade_system()

2. 猜数字游戏(核心代码)

python 复制代码
import random

def guess_number():
    target = random.randint(1, 100)
    attempts = 0
    max_attempts = 7
    while attempts < max_attempts:
        try:
            guess = int(input(f"猜数字(剩余{max_attempts-attempts}次):"))
            attempts += 1
            if guess < target:
                print("猜小了!")
            elif guess > target:
                print("猜大了!")
            else:
                print(f"猜对了!用了{attempts}次")
                return
        except ValueError:
            print("请输入有效数字")
    print(f"游戏结束,答案是{target}")

guess_number()

五、最佳实践:避坑指南

1. 提升代码可读性

python 复制代码
# 不好的写法
if x>0 and y>0:print("都为正数")

# 好的写法
is_all_positive = x > 0 and y > 0
if is_all_positive:
    print("都为正数")

2. 避免无限循环

python 复制代码
# 安全写法:限制尝试次数
max_attempts = 3
attempts = 0
while attempts < max_attempts:
    user_input = input("输入数字:")
    if user_input.isdigit():
        break
    attempts += 1

3. 选择合适循环结构

  • 已知迭代次数/遍历对象 → 用for循环;
  • 未知结束条件/交互式场景 → 用while循环。

总结

Python条件与循环的核心是"简洁高效+逻辑清晰":基础语法要牢记规范(冒号、无括号),高级技巧(列表推导式、enumerate/zip)能大幅简化代码,实战案例能帮你打通"语法→应用"的最后一公里。

掌握这些知识后,你就能轻松应对日常开发中的逻辑控制场景。如果在实际使用中遇到嵌套优化、效率瓶颈等问题,欢迎在评论区留言交流!

相关推荐
一点★1 小时前
“equals”与“==”、“hashCode”的区别和使用场景
java·开发语言
N***H4861 小时前
SpringCloud实战十三:Gateway之 Spring Cloud Gateway 动态路由
java·spring cloud·gateway
xwill*1 小时前
RDT-1B: A DIFFUSION FOUNDATION MODEL FOR BIMANUAL MANIPULATION
人工智能·pytorch·python·深度学习
陈奕昆1 小时前
n8n实战营Day2课时2:Loop+Merge节点进阶·Excel批量校验实操
人工智能·python·excel·n8n
程序猿追1 小时前
PyTorch算子模板库技术解读:无缝衔接PyTorch模型与Ascend硬件的桥梁
人工智能·pytorch·python·深度学习·机器学习
s***w1121 小时前
SpringMVC新版本踩坑[已解决]
java
老李头喽2 小时前
走进单元测试
java·单元测试
就叫飞六吧2 小时前
Spring MVC 接口命名为什么会有 *.do/actions等身影?
java·spring·mvc
葡萄成熟时 !2 小时前
黑马学生管理系统
java·开发语言