找回密码
 立即注册
首页 业界区 业界 人工智能之编程基础 Python 入门:第四章 条件循环与异 ...

人工智能之编程基础 Python 入门:第四章 条件循环与异常

痕厄 前天 09:05
人工智能之编程基础 P
y
t
h
o
n 入门


第四章 条件循环与异常
@
目录

  • 人工智能之编程基础 P
    y
    t
    h
    o
    n 入门
  • 前言
  • 条件语句

    • 基本语法
    • 示例

      • 1. 简单的 if 语句
      • 2. if-else 语句
      • 3. if-elif-else 语句 (处理多个条件)
      • 4. 嵌套的 if 语句
      • 真值测试 (Truthiness)


  • 循环语句

    • 1. for 循环

      • 基本语法
      • 示例

    • 2. while 循环

      • 基本语法
      • 示例

    • 3. 循环控制语句

      • 示例

    • 4. else 子句

      • 示例

    • 5. 嵌套循环

      • 示例

    • 6. 实用技巧

      • 遍历时获取索引
      • 同时遍历多个序列


  • 错误与异常

    • 1. 语法错误 (Syntax Errors)

      • 常见的语法错误示例:

    • 2. 异常 (Exceptions)

      • 常见的异常类型:
      • 异常示例:

    • 3. 异常处理

      • 基本语法:
      • 示例:

    • 4. 抛出异常
    • 5. 自定义异常
    • 6. 最佳实践

  • 总结
  • 资料关注

前言

本章节紧接上一章内容继续学习python的基本语法结构,主要学习条件语句、循环语句以及错误异常的处理方式。
条件语句

P
y
t
h
o
n 中的条件语句用于根据不同的条件执行不同的代码块。主要的条件语句是 if、elif(else if 的缩写)和 else。
基本语法
  1. if 条件1:
  2.     # 条件1为真时执行的代码
  3.     语句块1
  4. elif 条件2:
  5.     # 条件1为假,且条件2为真时执行的代码
  6.     语句块2
  7. else:
  8.     # 所有前面的条件都为假时执行的代码
  9.     语句块3
复制代码
关键点:

  • 冒号 (​: 每个 if, elif, else 语句后面必须跟一个冒号。
  • 缩进​: 冒号后面的代码块必须缩进(通常使用 4 个空格)。P
    y
    t
    h
    o
    n 通过缩进来判断哪些代码属于哪个条件分支。
  • elif 和 else 是可选的​: 你可以只有 if,也可以有 if-else 或 if-elif-else 链。
  • 条件求值​: 条件表达式的结果会被转换为布尔值 (True 或 False)。
示例

1. 简单的 if 语句
  1. age = 18
  2. if age >= 18:
  3.     print("你已成年,可以投票!")
  4. print("程序结束。") # 这行代码总是会执行
复制代码
输出:
  1. 你已成年,可以投票!
  2. 程序结束。
复制代码
2. if-else 语句
  1. age = 16
  2. if age >= 18:
  3.     print("你已成年,可以投票!")
  4. else:
  5.     print("你还未成年,需要等待。")
  6. print("程序结束。")
复制代码
输出:
  1. 你还未成年,需要等待。
  2. 程序结束。
复制代码
3. if-elif-else 语句 (处理多个条件)
  1. score = 85
  2. if score >= 90:
  3.     grade = 'A'
  4. elif score >= 80: # 注意:因为score<90才会到这里,所以这里只需检查>=80
  5.     grade = 'B'
  6. elif score >= 70:
  7.     grade = 'C'
  8. elif score >= 60:
  9.     grade = 'D'
  10. else:
  11.     grade = 'F'
  12. print(f"你的成绩等级是: {grade}")
复制代码
输出:
  1. 你的成绩等级是: B
复制代码
4. 嵌套的 if 语句
  1. age = 20
  2. has_license = True
  3. if age >= 18:
  4.     if has_license:
  5.         print("你可以合法驾驶。")
  6.     else:
  7.         print("你年龄够了,但需要先考驾照。")
  8. else:
  9.     print("你还太小,不能驾驶。")
复制代码
输出:
  1. 你可以合法驾驶。
复制代码
真值测试 (Truthiness)

在 P
y
t
h
o
n 中,很多值在条件语句中会被自动转换为布尔值:

  • 被认为是 False 的值 (falsy):

    • False
    • None
    • 数值零:0, 0.0
    • 空序列:"", [], (), {}
    • 空集合:set()

  • 其他所有值都被认为是 True (truthy):

    • True
    • 非零数值
    • 非空字符串、列表、元组、字典等

示例:
  1. my_list = [1, 2, 3]
  2. if my_list: # 检查列表是否非空,比 len(my_list) > 0 更P
  3. y
  4. t
  5. h
  6. o
  7. nic
  8.     print("列表不为空,包含元素:", my_list)
  9. else:
  10.     print("列表为空。")
  11. name = ""
  12. if name: # 检查字符串是否非空
  13.     print(f"你好, {name}!")
  14. else:
  15.     print("名字不能为空。")
复制代码
输出:
  1. 列表不为空,包含元素: [1, 2, 3]
  2. 名字不能为空。
复制代码
循环语句

P
y
t
h
o
n 中的循环语句用于重复执行一段代码,直到满足某个条件为止。主要有两种类型的循环:for 循环和 while 循环。
1. for 循环

for 循环用于遍历序列(如列表、元组、字符串)或其他可迭代对象。
基本语法
  1. for 变量 in 序列:
  2.     # 循环体
  3.     语句块
复制代码
示例
  1. # 遍历列表
  2. fruits = ["苹果", "香蕉", "橙子"]
  3. for fruit in fruits:
  4.     print(fruit)
复制代码
输出:
  1. 苹果
  2. 香蕉
  3. 橙子
复制代码
  1. # 遍历字符串
  2. word = "P
  3. y
  4. t
  5. h
  6. o
  7. n"
  8. for letter in word:
  9.     print(letter)
复制代码
输出:
  1. P
  2. y
  3. t
  4. h
  5. o
  6. n
复制代码
  1. # 使用 range() 函数
  2. for i in range(5): # range(5) 生成 0, 1, 2, 3, 4
  3.     print(i)
复制代码
输出:
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
复制代码
  1. # range(start, stop, step)
  2. for i in range(1, 10, 2): # 从1开始,到10结束(不包含10),步长为2
  3.     print(i)
复制代码
输出:
  1. 1
  2. 3
  3. 5
  4. 7
  5. 9
复制代码
2. while 循环

while 循环在条件为 True 时重复执行代码块。
基本语法
  1. while 条件:
  2.     # 循环体
  3.     语句块
  4.     # 更新条件,避免无限循环
复制代码
示例
  1. # 计数器循环
  2. count = 0
  3. while count < 5:
  4.     print(count)
  5.     count += 1 # 重要:更新条件变量,否则会无限循环
复制代码
输出:
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
复制代码
  1. # 用户输入循环
  2. user_input = ""
  3. while user_input.lower() != "退出":
  4.     user_input = input("请输入命令(输入'退出'结束): ")
  5.     print(f"你输入了: {user_input}")
复制代码
3. 循环控制语句


  • break: 立即退出循环。
  • continue: 跳过当前迭代,继续下一次迭代。
示例
  1. # 使用 break
  2. for i in range(10):
  3.     if i == 5:
  4.         break
  5.     print(i)
复制代码
输出:
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
复制代码
  1. # 使用 continue
  2. for i in range(5):
  3.     if i == 2:
  4.         continue
  5.     print(i)
复制代码
输出:
  1. 0
  2. 1
  3. 3
  4. 4
复制代码
4. else 子句

for 和 while 循环都可以有一个可选的 else 子句。当循环正常结束(没有被 break 中断)时,else 子句会执行。
示例
  1. # for-else
  2. for i in range(3):
  3.     print(i)
  4. else:
  5.     print("循环正常结束")
复制代码
输出:
  1. 0
  2. 1
  3. 2
  4. 循环正常结束
复制代码
  1. # for-else with break
  2. for i in range(5):
  3.     if i == 3:
  4.         break
  5.     print(i)
  6. else:
  7.     print("循环正常结束") # 这行不会执行,因为循环被break了
  8. print("循环结束")
复制代码
输出:
  1. 0
  2. 1
  3. 2
  4. 循环结束
复制代码
5. 嵌套循环

循环内部可以包含另一个循环。
示例
  1. # 打印乘法表
  2. for i in range(1, 4):
  3.     for j in range(1, 4):
  4.         print(f"{i} * {j} = {i * j}", end="  ")
  5.     print() # 换行
复制代码
输出:
  1. 1 * 1 = 1  1 * 2 = 2  1 * 3 = 3  
  2. 2 * 1 = 2  2 * 2 = 4  2 * 3 = 6  
  3. 3 * 1 = 3  3 * 2 = 6  3 * 3 = 9
复制代码
6. 实用技巧

遍历时获取索引
  1. fruits = ["苹果", "香蕉", "橙子"]
  2. for index, fruit in enumerate(fruits):
  3.     print(f"索引 {index}: {fruit}")
复制代码
输出:
  1. 索引 0: 苹果
  2. 索引 1: 香蕉
  3. 索引 2: 橙子
复制代码
同时遍历多个序列
  1. names = ["Alice", "Bob", "Charlie"]
  2. ages = [25, 30, 35]
  3. for name, age in zip(names, ages):
  4.     print(f"{name} 今年 {age} 岁")
复制代码
输出:
  1. Alice 今年 25 岁
  2. Bob 今年 30 岁
  3. Charlie 今年 35 岁
复制代码
错误与异常

在 P
y
t
h
o
n 编程中,错误主要分为两类:语法错误(Syntax Errors) 和 ​异常(Exceptions)​。理解它们的区别和处理方法对于编写健壮的程序至关重要。
1. 语法错误 (Syntax Errors)

语法错误发生在 P
y
t
h
o
n 解释器解析代码时,发现代码不符合 P
y
t
h
o
n 的语法规则。这类错误会在程序运行前就被检测出来,导致程序无法启动。
常见的语法错误示例:
  1. # 1. 缺少冒号
  2. if x > 5
  3.     print("x is greater than 5")
  4. # 2. 括号不匹配
  5. print("Hello World"
  6. # 3. 缩进错误
  7. if x > 5:
  8. print("x is greater than 5") # 缺少缩进
  9. # 4. 引号不匹配
  10. message = "Hello World'
复制代码
语法错误的特点:

  • 发生在程序运行之前
  • P
    y
    t
    h
    o
    n 解释器会指出错误的行号和类型
  • 必须修正后程序才能运行
2. 异常 (Exceptions)

异常是在程序运行过程中发生的错误,此时代码的语法是正确的,但在执行时遇到了问题(如除零、访问不存在的文件等)。
常见的异常类型:

异常类型描述示例ZeroDivisionError除以零10 / 0NameError变量名未定义print(undefined_variable)TypeError操作或函数应用于不适当类型的对象"hello" + 5ValueError操作或函数接收到类型正确但值不合适的参数int("hello")IndexError序列中没有此索引my_list[10](列表长度不足)KeyError字典中没有此键my_dict["missing_key"]FileNotFoundError文件未找到open("nonexistent.txt")异常示例:
  1. # ZeroDivisionError
  2. print(10 / 0)  # ZeroDivisionError: division by zero
  3. # ValueError
  4. int("hello")   # ValueError: invalid literal for int() with base 10: 'hello'
  5. # IndexError
  6. my_list = [1, 2, 3]
  7. print(my_list[5])  # IndexError: list index out of range
复制代码
3. 异常处理

P
y
t
h
o
n 提供了 try-except 语句来处理异常,让程序在遇到错误时不会崩溃,而是执行预设的错误处理代码。
基本语法:
  1. try:
  2.     # 可能出现异常的代码
  3.     可能出错的代码
  4. except ExceptionType:
  5.     # 处理特定异常的代码
  6.     错误处理代码
  7. except AnotherExceptionType:
  8.     # 处理另一种异常
  9.     错误处理代码
  10. else:
  11.     # 没有异常时执行的代码(可选)
  12.     无异常时的代码
  13. finally:
  14.     # 无论是否有异常都会执行的代码(可选)
  15.     最终清理代码
复制代码
示例:
  1. # 基本异常处理
  2. try:
  3.     x = int(input("请输入一个数字: "))
  4.     result = 10 / x
  5.     print(f"结果是: {result}")
  6. except ValueError:
  7.     print("输入的不是有效数字!")
  8. except ZeroDivisionError:
  9.     print("不能除以零!")
  10. except Exception as e:
  11.     print(f"发生了未预期的错误: {e}")
  12. else:
  13.     print("计算成功完成!")
  14. finally:
  15.     print("程序执行完毕。")
复制代码
  1. # 捕获所有异常
  2. try:
  3.     # 一些可能出错的代码
  4.     file = open("nonexistent.txt", "r")
  5. except:
  6.     print("发生了某种错误!")
复制代码
  1. # 捕获异常对象
  2. try:
  3.     numbers = [1, 2, 3]
  4.     print(numbers[10])
  5. except IndexError as e:
  6.     print(f"索引错误: {e}")
复制代码
4. 抛出异常

可以使用 raise 语句手动抛出异常。
  1. def validate_age(age):
  2.     if age < 0:
  3.         raise ValueError("年龄不能为负数")
  4.     if age > 150:
  5.         raise ValueError("年龄不能超过150")
  6.     return True
  7. try:
  8.     validate_age(-5)
  9. except ValueError as e:
  10.     print(f"验证失败: {e}")
复制代码
5. 自定义异常

可以创建自定义异常类来处理特定的错误情况。
  1. class CustomError(Exception):
  2.     """自定义异常类"""
  3.     pass
  4. class AgeError(Exception):
  5.     """年龄相关的异常"""
  6.     def __init__(self, message):
  7.         self.message = message
  8.         super().__init__(self.message)
  9. try:
  10.     raise AgeError("年龄不在有效范围内")
  11. except AgeError as e:
  12.     print(f"自定义异常: {e.message}")
复制代码
6. 最佳实践


  • 具体化异常处理​:尽量捕获具体的异常类型,而不是使用通用的 except。
  • 避免空的 except 块​:至少要记录错误或采取适当的措施。
  • 使用 finally 进行清理​:在 finally 块中进行资源清理工作。
  • 不要忽略异常​:即使不处理,也要记录下来。
  1. # 好的做法
  2. try:
  3.     file = open("data.txt", "r")
  4.     content = file.read()
  5. except FileNotFoundError:
  6.     print("文件未找到")
  7. except PermissionError:
  8.     print("没有权限访问文件")
  9. finally:
  10.     if 'file' in locals() and not file.closed:
  11.         file.close()
复制代码
总结

本文主要对python的条件循环以及错误语法的叙述与实践,下一章节会学习python的基本数据结构,以及基本数据结构的用法,它们之间的相互转换,和迭代生成。
资料关注

相关资料全部免费获取:
欢迎关注公众号:咚咚王
1.png

《P
y
t
h
o
n编程:从入门到实践》
《利用P
y
t
h
o
n进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《P
y
t
h
o
n深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen) 》
《自然语言处理综论  第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册