当前位置: 首页 > article >正文

Python控制结构详解

前言

一、控制结构概述

二、顺序结构

三、选择结构(分支结构)

1. 单分支 if

2. 双分支 if-else

3. 多分支 if-elif-else

4.实际应用:

四、循环结构

1. for循环

2. while循环

3. 循环控制语句

五、异常处理(try-except)

六、综合应用示例

场景1:

场景2:

前言

这部分内容之前写过,但感觉不是特别好,不方便以后翻阅,所以重新整理。有问题欢迎随时指正。

一、控制结构概述

Python的控制结构分为三种基本类型:顺序结构选择结构(分支结构) 和 循环结构。它们决定了代码的执行流程和逻辑。

二、顺序结构

定义:代码按书写顺序从上到下逐行执行,无分支或循环。
示例

# 变量赋值与打印输出
name = "Alice"
age = 25
print(f"Name: {name}, Age: {age}")

三、选择结构(分支结构)

根据条件判断结果,选择不同代码块执行。

1. 单分支 if

# 判断数字正负
num = -5
if num > 0:
    print("正数")

2. 双分支 if-else

# 根据成绩输出等级
score = 85
if score >= 90:
    print("优秀")
else:
    print("需努力")

3. 多分支 if-elif-else

# 判断数字能否被2、3、5整除
num = 15
if num % 2 == 0:
    print("能被2整除")
elif num % 3 == 0:
    print("能被3整除")
elif num % 5 == 0:
    print("能被5整除")
else:
    print("不能被2、3、5整除")

4.实际应用:

用户权限验证

user_role = "admin"
if user_role == "admin":
    print("显示所有管理功能")
elif user_role == "editor":
    print("显示编辑面板")
else:
    print("仅限浏览模式")

四、循环结构

重复执行某段代码,分为for循环和while循环。

1. for循环

# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# 遍历字典
person = {"name": "Bob", "age": 30}
for key, value in person.items():
    print(f"{key}: {value}")

# 使用range函数
for i in range(5):  # 输出0-4
    print(i)

实际应用:批量文件重命名

files = ["report.txt", "image.jpg", "data.csv"]
for filename in files:
    if filename.endswith(".txt"):
        print(f"处理文本文件: {filename}")

2. while循环

# 计算1-10的和
sum = 0
i = 1
while i <= 10:
    sum += i
    i += 1
print(f"和为: {sum}")

实际应用:API请求重试机制

max_retries = 3
retries = 0
while retries < max_retries:
    response = make_api_request()
    if response.success:
        break
    retries += 1
else:
    print("请求失败,已达最大重试次数")

3. 循环控制语句

  • break:立即退出循环。
  • continue:跳过当前迭代,进入下一次循环。
# 查找第一个能被7整除的数
numbers = [12, 15, 18, 21, 24]
for num in numbers:
    if num % 7 == 0:
        print(f"找到: {num}")
        break

# 输出1-10中的奇数
for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i)

五、异常处理(try-except

try:
    # 可能出错的代码
except ExceptionType:
    # 处理异常
finally:
    # 无论是否异常都会执行

实际应用:安全除法计算

def safe_divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        print("错误:除数不能为零")
        return None
    except TypeError:
        print("错误:输入必须为数字")
        return None
    else:
        print(f"结果为:{result}")
        return result
    finally:
        print("计算完成")

safe_divide(10, 2)   # 正常输出
safe_divide(5, 0)    # 触发ZeroDivisionError

六、综合应用示例

场景1

简易购物车系统

cart = []
prices = {"apple": 5.0, "banana": 3.5, "milk": 8.0}

while True:
    print("\n1. 添加商品 2. 查看购物车 3. 结账 4. 退出")
    choice = input("请选择操作:")

    if choice == "1":
        item = input("输入商品名称:").lower()
        if item in prices:
            cart.append(item)
            print(f"{item} 已加入购物车")
        else:
            print("商品不存在!")

    elif choice == "2":
        print("购物车内容:")
        for item in set(cart):
            print(f"{item}: {cart.count(item)}件")

    elif choice == "3":
        total = sum(prices[item] for item in cart)
        print(f"总金额:{total:.2f}元")
        break

    elif choice == "4":
        print("感谢使用!")
        break

    else:
        print("无效的输入,请重试")

场景2:

猜数字游戏

import random

secret_number = random.randint(1, 100)
attempts = 0
max_attempts = 5

print("欢迎来到猜数字游戏!数字在1-100之间。")

while attempts < max_attempts:
    guess = int(input("请输入你的猜测: "))
    attempts += 1

    if guess < secret_number:
        print("太小了!")
    elif guess > secret_number:
        print("太大了!")
    else:
        print(f"恭喜你!用了{attempts}次猜中了数字{secret_number}。")
        break
else:
    print(f"很遗憾,机会用完了。正确答案是{secret_number}。")

http://www.kler.cn/a/614562.html

相关文章:

  • sql长时间卡在gc current request事件
  • Linux数据迁移与挂载优化方案
  • 【愚公系列】《高效使用DeepSeek》038-应急事务处理
  • 网络相关的知识总结1
  • 网页设计思路
  • pytorch与其他ai工具
  • PyGame开发贪吃蛇小游戏
  • Open HarmonyOS 5.0 分布式软总线子系统 (DSoftBus) 详细设计与运行分析报告
  • Ditto-Talkinghead:阿里巴巴数字人技术新突破 [特殊字符]️
  • OpenCV图像拼接(10)用于实现图像拼接过程中的时间流逝(timelapse)效果的一个类cv::detail::Timelapser
  • Sentinel[超详细讲解]-1
  • 用空闲时间做了一个小程序-二维码生成器
  • linux-5.10.110内核源码分析 - 写磁盘(从VFS系统调用到I/O调度及AHCI写磁盘)
  • 明天该穿哪件内衣出门?
  • Laravel APP_KEY 生成方法
  • 【商城实战(92)】高并发下的商城缓存进阶:从原理到实战
  • 当模板方法模式遇上工厂模式:一道优雅的烹饪架构设计
  • -PHP 应用文件上传函数缺陷条件竞争二次渲染黑白名单JS 绕过
  • 分布式特性对比
  • C语言入门教程100讲(0)从了解C语言的发展史开始