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

人工智能之编程基础 Python 入门

第四章 条件循环与异常


@


前言

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


条件语句

Python 中的条件语句用于根据不同的条件执行不同的代码块。主要的条件语句是 ifelif(else if 的缩写)和 else

基本语法

if 条件1:     # 条件1为真时执行的代码     语句块1 elif 条件2:     # 条件1为假,且条件2为真时执行的代码     语句块2 else:     # 所有前面的条件都为假时执行的代码     语句块3 

关键点:

  1. 冒号 (:)​: 每个 if, elif, else 语句后面必须跟一个冒号。
  2. 缩进​: 冒号后面的代码块必须缩进(通常使用 4 个空格)。Python 通过缩进来判断哪些代码属于哪个条件分支。
  3. elifelse 是可选的​: 你可以只有 if,也可以有 if-elseif-elif-else 链。
  4. 条件求值​: 条件表达式的结果会被转换为布尔值 (TrueFalse)。

示例

1. 简单的 if 语句

age = 18 if age >= 18:     print("你已成年,可以投票!") print("程序结束。") # 这行代码总是会执行 

输出:

你已成年,可以投票! 程序结束。 

2. if-else 语句

age = 16 if age >= 18:     print("你已成年,可以投票!") else:     print("你还未成年,需要等待。") print("程序结束。") 

输出:

你还未成年,需要等待。 程序结束。 

3. if-elif-else 语句 (处理多个条件)

score = 85 if score >= 90:     grade = 'A' elif score >= 80: # 注意:因为score<90才会到这里,所以这里只需检查>=80     grade = 'B' elif score >= 70:     grade = 'C' elif score >= 60:     grade = 'D' else:     grade = 'F' print(f"你的成绩等级是: {grade}") 

输出:

你的成绩等级是: B 

4. 嵌套的 if 语句

age = 20 has_license = True  if age >= 18:     if has_license:         print("你可以合法驾驶。")     else:         print("你年龄够了,但需要先考驾照。") else:     print("你还太小,不能驾驶。") 

输出:

你可以合法驾驶。 

真值测试 (Truthiness)

在 Python 中,很多值在条件语句中会被自动转换为布尔值:

  • 被认为是 False 的值 (falsy):
    • False
    • None
    • 数值零:0, 0.0
    • 空序列:"", [], (), {}
    • 空集合:set()
  • 其他所有值都被认为是 True (truthy):
    • True
    • 非零数值
    • 非空字符串、列表、元组、字典等

示例:

my_list = [1, 2, 3] if my_list: # 检查列表是否非空,比 len(my_list) > 0 更Pythonic     print("列表不为空,包含元素:", my_list) else:     print("列表为空。")  name = "" if name: # 检查字符串是否非空     print(f"你好, {name}!") else:     print("名字不能为空。") 

输出:

列表不为空,包含元素: [1, 2, 3] 名字不能为空。 

循环语句

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

1. for 循环

for 循环用于遍历序列(如列表、元组、字符串)或其他可迭代对象。

基本语法

for 变量 in 序列:     # 循环体     语句块 

示例

# 遍历列表 fruits = ["苹果", "香蕉", "橙子"] for fruit in fruits:     print(fruit) 

输出:

苹果 香蕉 橙子 
# 遍历字符串 word = "Python" for letter in word:     print(letter) 

输出:

P y t h o n 
# 使用 range() 函数 for i in range(5): # range(5) 生成 0, 1, 2, 3, 4     print(i) 

输出:

0 1 2 3 4 
# range(start, stop, step) for i in range(1, 10, 2): # 从1开始,到10结束(不包含10),步长为2     print(i) 

输出:

1 3 5 7 9 

2. while 循环

while 循环在条件为 True 时重复执行代码块。

基本语法

while 条件:     # 循环体     语句块     # 更新条件,避免无限循环 

示例

# 计数器循环 count = 0 while count < 5:     print(count)     count += 1 # 重要:更新条件变量,否则会无限循环 

输出:

0 1 2 3 4 
# 用户输入循环 user_input = "" while user_input.lower() != "退出":     user_input = input("请输入命令(输入'退出'结束): ")     print(f"你输入了: {user_input}") 

3. 循环控制语句

  • break: 立即退出循环。
  • continue: 跳过当前迭代,继续下一次迭代。

示例

# 使用 break for i in range(10):     if i == 5:         break     print(i) 

输出:

0 1 2 3 4 
# 使用 continue for i in range(5):     if i == 2:         continue     print(i) 

输出:

0 1 3 4 

4. else 子句

forwhile 循环都可以有一个可选的 else 子句。当循环正常结束(没有被 break 中断)时,else 子句会执行。

示例

# for-else for i in range(3):     print(i) else:     print("循环正常结束") 

输出:

0 1 2 循环正常结束 
# for-else with break for i in range(5):     if i == 3:         break     print(i) else:     print("循环正常结束") # 这行不会执行,因为循环被break了  print("循环结束") 

输出:

0 1 2 循环结束 

5. 嵌套循环

循环内部可以包含另一个循环。

示例

# 打印乘法表 for i in range(1, 4):     for j in range(1, 4):         print(f"{i} * {j} = {i * j}", end="  ")     print() # 换行 

输出:

1 * 1 = 1  1 * 2 = 2  1 * 3 = 3   2 * 1 = 2  2 * 2 = 4  2 * 3 = 6   3 * 1 = 3  3 * 2 = 6  3 * 3 = 9 

6. 实用技巧

遍历时获取索引

fruits = ["苹果", "香蕉", "橙子"] for index, fruit in enumerate(fruits):     print(f"索引 {index}: {fruit}") 

输出:

索引 0: 苹果 索引 1: 香蕉 索引 2: 橙子 

同时遍历多个序列

names = ["Alice", "Bob", "Charlie"] ages = [25, 30, 35] for name, age in zip(names, ages):     print(f"{name} 今年 {age} 岁") 

输出:

Alice 今年 25 岁 Bob 今年 30 岁 Charlie 今年 35 岁 

错误与异常

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

1. 语法错误 (Syntax Errors)

语法错误发生在 Python 解释器解析代码时,发现代码不符合 Python 的语法规则。这类错误会在程序运行前就被检测出来,导致程序无法启动。

常见的语法错误示例:

# 1. 缺少冒号 if x > 5     print("x is greater than 5")  # 2. 括号不匹配 print("Hello World"  # 3. 缩进错误 if x > 5: print("x is greater than 5") # 缺少缩进  # 4. 引号不匹配 message = "Hello World' 

语法错误的特点:

  • 发生在程序运行之前
  • Python 解释器会指出错误的行号和类型
  • 必须修正后程序才能运行

2. 异常 (Exceptions)

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

常见的异常类型:

异常类型 描述 示例
ZeroDivisionError 除以零 10 / 0
NameError 变量名未定义 print(undefined_variable)
TypeError 操作或函数应用于不适当类型的对象 "hello" + 5
ValueError 操作或函数接收到类型正确但值不合适的参数 int("hello")
IndexError 序列中没有此索引 my_list[10](列表长度不足)
KeyError 字典中没有此键 my_dict["missing_key"]
FileNotFoundError 文件未找到 open("nonexistent.txt")

异常示例:

# ZeroDivisionError print(10 / 0)  # ZeroDivisionError: division by zero  # ValueError int("hello")   # ValueError: invalid literal for int() with base 10: 'hello'  # IndexError my_list = [1, 2, 3] print(my_list[5])  # IndexError: list index out of range 

3. 异常处理

Python 提供了 try-except 语句来处理异常,让程序在遇到错误时不会崩溃,而是执行预设的错误处理代码。

基本语法:

try:     # 可能出现异常的代码     可能出错的代码 except ExceptionType:     # 处理特定异常的代码     错误处理代码 except AnotherExceptionType:     # 处理另一种异常     错误处理代码 else:     # 没有异常时执行的代码(可选)     无异常时的代码 finally:     # 无论是否有异常都会执行的代码(可选)     最终清理代码 

示例:

# 基本异常处理 try:     x = int(input("请输入一个数字: "))     result = 10 / x     print(f"结果是: {result}") except ValueError:     print("输入的不是有效数字!") except ZeroDivisionError:     print("不能除以零!") except Exception as e:     print(f"发生了未预期的错误: {e}") else:     print("计算成功完成!") finally:     print("程序执行完毕。") 
# 捕获所有异常 try:     # 一些可能出错的代码     file = open("nonexistent.txt", "r") except:     print("发生了某种错误!") 
# 捕获异常对象 try:     numbers = [1, 2, 3]     print(numbers[10]) except IndexError as e:     print(f"索引错误: {e}") 

4. 抛出异常

可以使用 raise 语句手动抛出异常。

def validate_age(age):     if age < 0:         raise ValueError("年龄不能为负数")     if age > 150:         raise ValueError("年龄不能超过150")     return True  try:     validate_age(-5) except ValueError as e:     print(f"验证失败: {e}") 

5. 自定义异常

可以创建自定义异常类来处理特定的错误情况。

class CustomError(Exception):     """自定义异常类"""     pass  class AgeError(Exception):     """年龄相关的异常"""     def __init__(self, message):         self.message = message         super().__init__(self.message)  try:     raise AgeError("年龄不在有效范围内") except AgeError as e:     print(f"自定义异常: {e.message}") 

6. 最佳实践

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

总结

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

资料关注

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

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

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

发表评论

评论已关闭。

相关文章