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 = 20
     if 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,4
     print(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:
   continue
 print(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) # 输出: 开风扇 

### Python 流程控制概述 Python 流程控制允许编程人员决定程序中指令的执行顺序。这不仅限于按代码书写的线性方式运行,而是可以根据特定条件跳过某些部分或重复执行某一部分[^1]。 #### 条件语句 (if, elif, else) 条件语句用于基于不同情况来执行不同的操作。`if` 语句是最基本的形式之一,当指定条件为真时则执行相应的代码块;如果希望处理多个可能的情况,则可以使用 `elif`(即else if)继续测试其他条件;而 `else` 则用来定义在前面所有条件都不满足的情况下要采取的动作。 ```python age = 20 if age < 18: print('未成年') elif age >= 18 and age < 60: print('成年人') else: print('老年人') ``` #### 循环结构 (for, while) 循环使得一段代码能够被多次执行直到某个给定条件下不再成立为止。`for` 循环通常用于遍历序列类型的对象如列表、元组等;相反地,`while` 循环会在每次迭代前检查一次布尔表达式的真假,在其保持为真的情况下持续运行内部逻辑。 ```python # 使用 for 循环打印数字 0 至 4 for i in range(5): print(i) # 使用 while 循环计算阶乘 n = int(input("请输入一个正整数: ")) factorial = 1 i = 1 while i <= n: factorial *= i i += 1 print(f"{n} 的阶乘是 {factorial}") ``` #### 控制流工具 (break, continue) 为了更灵活地管理循环行为,Python 还提供了两个特别有用的命令——`break` 和 `continue`。前者可以在任何时候立即退出最内层循环并结束整个过程;后者则是提前进入下一轮迭代而不必等待当前轮次完成[^3]。 ```python # break 示例:寻找第一个偶数后停止查找 numbers = [1, 3, 5, 7, 8, 9] for num in numbers: if num % 2 == 0: print(f'找到的第一个偶数是:{num}') break # continue 示例:忽略奇数仅输出偶数 for num in numbers: if num % 2 != 0: continue print(num) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值