欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Python——流程控制

Python——流程控制

2025/4/24 8:12:43 来源:https://blog.csdn.net/Lemon__ing/article/details/147441034  浏览:    关键词:Python——流程控制

目录

Python与Shell详细对比分析

一、核心定位与设计目标

二、语法与编程范式对比

三、典型应用场景

四、执行效率与维护性

if语句

 一、基础语法结构

二、核心规则与特性

三、不同分支类型详解

1. 单分支(仅if)

2. 双分支(if-else)

3. 多分支(if-elif-else)

四、高级用法与技巧

关系运算符

一、关系运算符(Comparison Operators)

核心特性:

二、逻辑运算符(Logical Operators)

核心特性:

三、常见应用场景

1. 条件语句(if判断)

2. 数据过滤

 Python的循环

一、while循环

1. 基本语法

2. 执行流程

3. 典型用法

4. 注意事项

二、for循环

1. 基本语法

2. 执行流程

3. 典型用法

4. 注意事项

三、循环控制语句

1. break:立即退出整个循环

2. continue:跳过当前迭代,进入下一次循环

3. else块:循环正常结束后的收尾

四、while vs for循环对比

五、常见错误与规避

六、高级技巧

实际案例

‌难度级别 1:基础应用‌

案例 1:判断数字正负

案例 2:简单三元运算符

‌难度级别 2:组合条件‌

案例 3:成绩等级判断

案例 4:闰年判断

‌难度级别 3:综合逻辑‌

案例 5:用户输入验证

案例 6:智能温度建议


    python提供了多种流程控制语句,其中包括了if语句、while循环、for循环、break和continue语句。这种流程控制在各语言中大同小异。以下将以Shell作为对照体来进行讲解:

Python与Shell详细对比分析

一、核心定位与设计目标
  • Shell
    • 定位为‌命令行解释器‌,核心功能是直接调用操作系统命令,擅长处理文件管理、进程调度等系统级任务。
    • 设计目标为‌快速实现简单自动化‌,例如批量文件重命名、日志过滤等。
  • Python
    • 作为‌通用编程语言‌,支持复杂程序开发(如Web应用、机器学习模型),强调代码可读性和跨平台能力。
    • 设计目标覆盖‌全栈开发‌,适用于高复杂度逻辑和数据结构操作。

二、语法与编程范式对比
特性ShellPython
变量声明直接赋值(如var="value"需显式赋值(如var = "value"
条件判断依赖[ ]test命令(如if [ -f file ]直接布尔表达式(如if os.path.exists(file)
循环结构依赖管道符和命令组合(如for i in $(ls)支持迭代器(如for file in os.listdir()
错误处理默认忽略错误继续执行异常捕获机制(try-except)强制处理错误
数据结构仅支持简单字符串和数组支持列表、字典、集合等复杂结构

三、典型应用场景
  • Shell优先场景

    1. 快速执行系统命令(如grep "error" log.txt | wc -l);
    2. 轻量级自动化任务(如定时备份、日志清理);
    3. 依赖Unix/Linux环境工具链的操作(如awk/sed文本处理)。
  • Python优先场景

    1. 需要复杂逻辑(如多线程、网络请求);
    2. 跨平台兼容性需求(Windows/Linux通用脚本);
    3. 数据分析和科学计算(如pandas处理CSV、numpy矩阵运算)。

四、执行效率与维护性
维度ShellPython
执行速度直接调用系统命令,文件操作效率高解释型语言,但可通过C扩展优化性能
调试难度依赖echo调试,错误信息不直观支持IDE调试和pdb模块
代码可读性命令组合复杂时难以维护强制缩进,代码结构化程度高
扩展能力依赖外部命令,功能扩展受限标准库+第三方库(如requests)生态丰富

if语句

 一、基础语法结构

Python的if语句用于条件判断,语法结构如下:

if 条件1:# 条件1成立时执行的代码 
elif 条件2:# 条件2成立时执行的代码 
else:# 所有条件均不成立时执行的代码 
  • if‌:必选分支,用于检查第一个条件是否满足。
  • elif‌(可选):可多次使用,检查其他条件(类似“否则如果”)。
  • else‌(可选):兜底分支,所有条件不满足时执行。

二、核心规则与特性

  1. 缩进强制要求
    Python通过缩进(通常4个空格)标识代码块,省略缩进会引发IndentationError

    if True:print("会报错!") # 缺少缩进 
  2. 条件表达式类型

    • 条件可以是直接布尔值(True/False),或返回布尔值的表达式。
    • 非布尔值会隐式转换:0None、空容器(如[]"")视为False,其他视为True
    if 1: # 条件为True 
    if "hello": # 条件为True 
    if []: # 条件为False 
  3. 多条件组合
    使用逻辑运算符and(与)、or(或)、not(非)连接多个条件。

    age = 25 
    if age >= 18 and age <= 60:print("成年人") 

三、不同分支类型详解

1. 单分支(仅if
num = 10 
if num > 0:print("正数") 
2. 双分支(if-else
num = -5 
if num >= 0:print("非负数") 
else:print("负数") 
3. 多分支(if-elif-else
score = 85 
if score >= 90:print("优秀") 
elif score >= 80:print("良好") 
elif score >= 60:print("及格") 
else:print("不及格") 

四、高级用法与技巧

  1. 单行if语句(三元表达式)
    适用于简单赋值或返回值的场景。

    # 语法:结果1 if 条件 else 结果2 
    status = "通过" if score >= 60 else "未通过" 
  2. in关键字结合使用
    检查元素是否存在于容器(如列表、字符串)中。

    fruits = ["apple", "banana", "cherry"] 
    if "banana" in fruits:print("找到香蕉!") 
  3. 嵌套if语句
    在代码块内再次使用if判断,但需避免过度嵌套(一般不超过3层)。

    age = 20if age >= 18:if age <= 60:print("可参与工作") else:print("已退休") 
  4. 类型与值双重验证
    使用isinstance()检查变量类型。

    value = "123" 
    if isinstance(value, str) and value.isdigit():print("是数字字符串")

关系运算符

一、关系运算符(Comparison Operators)

用于比较两个值之间的关系,返回布尔值TrueFalse

运算符名称示例说明
==等于3 == 5 → False值相等返回True(注意类型严格匹配)
!=不等于3 != 5 → True值不相等时返回True
>大于10 > 5 → True左值大于右值时成立
<小于10 < 5 → False左值小于右值时成立
>=大于等于5 >= 5 → True左值≥右值时成立
<=小于等于5 <= 3 → False左值≤右值时成立
核心特性:
  1. 链式比较
    Python允许连续比较(如1 < x < 5),等价于(1 < x) and (x < 5)

    x = 3 
    print(1 < x < 5) # 输出 True 
  2. 类型敏感
    不同类型可能无法直接比较(如3 == "3"返回False)。

    print(3 == 3.0) # True(int与float数值相等) 
    print(3 == "3") # False(类型不同) 

二、逻辑运算符(Logical Operators)

用于组合多个布尔条件,构建复杂逻辑判断。

运算符名称示例说明
and逻辑与(x > 5) and (x < 10)所有条件为True时返回True
or逻辑或(x < 0) or (x > 100)至少一个条件为True时返回True
not逻辑非not (x == y)反转布尔值(TrueFalse,反之亦然)
核心特性:
  1. 短路求值(Short-Circuiting)

    • and:若左侧为False,直接返回False,不计算右侧。
    • or:若左侧为True,直接返回True,不计算右侧。
    def check():print("函数被调用")return True print(False and check()) # 输出 False(不执行check) 
    print(True or check()) # 输出 True(不执行check) 
  2. 返回实际值而非布尔值

    • and:返回第一个为False的值(若无则返回最后一个值)。
    • or:返回第一个为True的值(若无则返回最后一个值)。
    print(0 and 5) # 0(第一个假值) 
    print(3 and 5) # 5(全为真,返回最后一个) 
    print(0 or "hi") # "hi"(第一个真值) 

三、常见应用场景

1. 条件语句(if判断)
age = 18 
if age >= 18 and age <= 60:print("允许进入") 
2. 数据过滤
numbers = [10, 20, 30, 40] 
filtered = [x for x in numbers if x > 15 and x % 4 == 0] 
print(filtered) # 输出 [20, 40]

 Python的循环

一、while循环
1. 基本语法
while 条件:# 循环体代码 
else:# 当循环正常结束(非break退出)时执行的代码 
2. 执行流程
  1. 检查条件是否为True
  2. 若为True,执行循环体代码,然后回到步骤1。
  3. 若为False,跳过循环体,执行else块(如果有)。
3. 典型用法
  • 不确定次数的循环‌(如用户输入验证):

    password = "" 
    while password != "secret":password = input("请输入密码:") 
    print("登录成功!") 
  • 计数器控制循环‌:

    count = 0 
    while count < 5:print(f"当前计数:{count}")count += 1 
4. 注意事项
  • 避免无限循环‌:确保循环条件最终变为False
  • else块的特殊性‌:仅在循环正常结束时执行(未触发break)。

二、for循环
1. 基本语法
for 变量 in 可迭代对象:# 循环体代码 
else:# 循环正常结束时执行 
2. 执行流程
  1. 从可迭代对象(如列表、字符串、字典等)中依次取出元素。
  2. 每次迭代将元素赋值给变量,执行循环体。
  3. 遍历完成后,执行else块(如果有)。
3. 典型用法
  • 遍历列表‌:

    fruits = ["apple", "banana", "cherry"] 
    for fruit in fruits:print(fruit) 
  • 遍历字典‌:

    person = {"name": "Alice", "age": 30} 
    for key in person: # 遍历键print(key) 
    for value in person.values(): # 遍历值print(value) 
    for k, v in person.items(): # 遍历键值对print(f"{k}: {v}") 
  • 使用range()生成序列‌:

    for i in range(5): # 0,1,2,3,4print(i) 
    for i in range(2, 10, 3): # 2,5,8(步长3)print(i) 
4. 注意事项
  • 不要修改正在遍历的序列‌:可能导致意外跳过元素或无限循环。
  • 可迭代对象类型‌:支持字符串、列表、元组、字典、集合、文件对象等。

三、循环控制语句
1. break:立即退出整个循环
# 搜索数字,找到后提前退出 
numbers = [3, 7, 2, 9, 5] 
target = 9 
for num in numbers:if num == target:print("找到目标!")break 
else:print("未找到") 
2. continue:跳过当前迭代,进入下一次循环
# 打印1~10中的奇数 
for i in range(1, 11):if i % 2 == 0:continueprint(i) 
3. else块:循环正常结束后的收尾
# 检查列表是否全为偶数 
nums = [2, 4, 6, 8] 
for n in nums:if n % 2 != 0:print("存在奇数")break 
else:print("全部是偶数") 

四、while vs for循环对比
维度while循环for循环
适用场景不确定次数的循环(如等待条件变化)遍历已知的可迭代对象(如列表、字符串)
循环条件依赖显式的布尔表达式自动处理可迭代对象的遍历
退出方式条件变为False或手动break遍历完成或手动break
性能可能因条件计算产生额外开销通常更高效(针对迭代优化)

五、常见错误与规避
  1. 无限循环‌:

    # 错误示例:缺少终止条件 
    while True:print("无限循环...") 
  2. 修改迭代中的列表‌:

    # 错误示例:遍历时删除元素 
    lst = [1, 2, 3, 4] 
    for num in lst:if num % 2 == 0:lst.remove(num) # 可能导致元素跳过 
  3. 误用else‌:

    # 错误理解:else块在循环结束后总会执行 
    for i in range(3):if i == 10:break 
    else:print("执行") # 实际会执行,因为未触发break 

六、高级技巧
  1. 嵌套循环‌:

    for i in range(3):for j in range(2):print(f"({i}, {j})") 
  2. 使用enumerate()获取索引和值‌:

    fruits = ["apple", "banana", "cherry"]for index, fruit in enumerate(fruits):print(f"索引{index}: {fruit}") 
  3. 结合zip()并行遍历‌:

    names = ["Alice", "Bob"] 
    ages = [25, 30] 
    for name, age in zip(names, ages):print(f"{name} is {age} years old") 

实际案例

难度级别 1:基础应用

案例 1:判断数字正负
num = -5 
if num > 0:print("正数") 
elif num < 0:print("负数") 
else:print("零") 
# 输出: 负数 
案例 2:简单三元运算符
age = 18 
status = "成年" if age >= 18 else "未成年" 
print(status) # 输出: 成年 

难度级别 2:组合条件

案例 3:成绩等级判断
score = 85 
if score >= 90:grade = "A" 
elif 80 <= score < 90:grade = "B" 
elif 60 <= score < 80:grade = "C" 
else:grade = "D" 
print(f"成绩等级:{grade}") # 输出: B 
案例 4:闰年判断
year = 2024 
is_leap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) 
print(f"{year}是闰年吗?{is_leap}") # 输出: True 

难度级别 3:综合逻辑

案例 5:用户输入验证
username = "admin" 
password = "123456" 
# 验证用户名和密码长度,且不能包含空格 
valid_user = len(username) >= 5 and ' ' not in username 
valid_pass = len(password) >= 6 and ' ' not in password 
print("验证通过" if valid_user and valid_pass else "验证失败") 
# 输出: 验证通过 
案例 6:智能温度建议
temp = 28 
humidity = 70 
# 组合温度和湿度条件 
advice = "开空调" if temp > 30 or (temp > 25 and humidity > 75) else "开风扇" 
print(advice) # 输出: 开风扇 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词