# 前言
本文属于个人总结,可能有不准的地方,欢迎指正!思维导图使用的 mermaid 语法,如果无法显示,请复制到支持 mermaid 输出显示的编辑器预览(比如 Typora)。
# Python 程序设计 -- 课程学习总结
# 1)-Python 环境的安装
- 下载 Python:从 Python 官方网站下载适合自己操作系统的 Python 版本。
- 安装 Python:按照提示完成 Python 的安装过程。
- 验证 Python 安装:通过在命令行输入 “python --version” 来验证 Python 是否安装成功。(如果未勾选自动配置环境变量:手动将 Python 的安装路径添加到系统的环境变量中,以便在任何位置都能运行 Python。)
- 安装 IDE:选择一个适合自己的 Python 开发环境,如 PyCharm、VS Code 等。
- 使用 pip 安装库:pip 是 Python 的包管理器,可以用来安装和管理 Python 库。
- 使用虚拟环境:为每个项目创建一个独立的虚拟环境,以避免不同项目之间的库冲突。(PyCharm 默认虚拟环境)
# 1.1)- 选择合适的 IDE
- 使用 PyCharm:PyCharm 是一个强大的 Python 开发工具,提供了代码编辑、调试、测试、版本控制等功能。
- 使用 VS Code:VS Code 是一个轻量级的代码编辑器,支持多种编程语言,包括 Python。
- 使用 Jupyter Notebook:Jupyter Notebook 是一个交互式的开发环境,可以实时查看代码运行结果。
上述仅代表个人了解的 IDE,可以根据自己实际需求选择适合自己的 IDE。
简单的一个思维导图
| graph TD; |
| A[下载Python] --> B[安装Python]; |
| B --> C[验证Python安装]; |
| C --> D[安装IDE]; |
| D --> E[使用pip安装库]; |
| E --> F[使用虚拟环境]; |
# 2)- 理解 Python 程序语句
理解 Python 程序语句的主要内容包括以下几个方面:
# 1. 简单条件语句:
- 使用
if
关键字进行条件判断,根据条件是否为真执行相应的语句块。
| x = 10 |
| if x > 0: |
| print("x 是正数") |
# 2. 复杂条件语句:
- 利用
if-elif-else
结构,处理多个条件情况,依次检查条件并执行符合条件的语句块。
| score = 85 |
| if score >= 90: |
| print("优秀") |
| elif 80 <= score < 90: |
| print("良好") |
| else: |
| print("需要努力") |
| |
# 3.while 循环语句:
- 使用
while
关键字创建循环,当给定条件为真时,反复执行循环体内的语句。
| count = 0 |
| while count < 5: |
| print(count) |
| count += 1 |
# 4.while 循环的退出:
- 使用
break
语句可以在循环体内提前终止循环,而 continue
语句则跳过当前迭代继续下一次。
| num = 1 |
| while num <= 10: |
| if num == 5: |
| break |
| print(num) |
| num += 1 |
# 5.for 循环:
- 利用
for
关键字遍历可迭代对象,如列表、元组等,执行循环体内的语句。
| fruits = ["苹果", "橙子", "香蕉"] |
| for fruit in fruits: |
| print(fruit) |
# 6. 循环注意事项:
- 避免无限循环,确保循环条件能在某个时刻变为假。
- 谨慎使用全局变量,以免影响程序逻辑。
| total = 0 |
| for i in range(5): |
| total += i |
| print(total) |
# 7. 循环的嵌套:
- 在一个循环体内嵌套另一个循环,可以处理更为复杂的逻辑。
| for i in range(3): |
| for j in range(2): |
| print(i, j) |
# 8. 异常处理:
- 使用
try-except
结构捕获和处理异常,防止程序在出错时崩溃。 - 可以使用
else
子句指定在没有异常发生时执行的代码块,以及 finally
子句指定无论是否发生异常都要执行的代码块。
| try: |
| result = 10 / 0 |
| except ZeroDivisionError: |
| print("除数不能为零") |
| else: |
| print("计算结果为:", result) |
| finally: |
| print("无论如何都会执行的代码块") |
以上是 Python 程序语句的基本内容,它们为编写结构化、可维护的程序提供了强大的工具。
简单的一个思维导图
| graph TD |
| A[理解Python程序语句] --> B[简单条件语句] |
| A --> C[复杂条件语句] |
| A --> D[while循环语句] |
| A --> E[while循环的退出] |
| A --> F[for循环] |
| A --> G[循环注意事项] |
| A --> H[循环的嵌套] |
| A --> I[异常处理] |
| B -->|if关键字| J[if条件判断] |
| C -->|if-elif-else结构| K[if-elif-else条件判断] |
| D -->|while关键字| L[while循环] |
| E -->|break语句| M[提前终止循环] |
| E -->|continue语句| N[跳过当前迭代] |
| F -->|for关键字| O[遍历可迭代对象] |
| G -->|全局变量| P[谨慎使用全局变量] |
| H -->|嵌套循环| Q[处理更复杂的逻辑] |
| I -->|try-except结构| R[捕获和处理异常] |
| R -->|else子句| S[没有异常时执行的代码块] |
| R -->|finally子句| T[无论是否发生异常都要执行的代码块] |
# 3)Python 函数与模块
# 1. Python 函数:
函数是一组执行特定任务的代码块,通过使用 def
关键字定义。函数可以接受参数,执行特定操作,并返回结果。
| |
| def add_numbers(a, b): |
| result = a + b |
| return result |
| |
| |
| sum_result = add_numbers(3, 5) |
| print("和为:", sum_result) |
# 2. Python 变量范围:
变量的范围指的是变量在程序中的可访问性。局部变量只能在其被定义的函数内部访问,而全局变量在整个程序中都可访问。
| |
| global_var = 10 |
| |
| |
| def example_function(): |
| local_var = 5 |
| print("局部变量:", local_var) |
| |
| |
| example_function() |
| |
| |
| print("全局变量:", global_var) |
# 3. 函数调用:
通过函数名和参数列表调用函数,传递参数以执行特定的任务。
| |
| def greet(name): |
| print("你好," + name + "!") |
| |
| |
| greet("小明") |
# 4. 函数的默认参数:
函数可以定义具有默认值的参数,调用时如果不提供相应参数的值,则使用默认值。
| |
| def greet_with_default(name, greeting="你好"): |
| print(greeting + "," + name + "!") |
| |
| |
| greet_with_default("小红") |
| greet_with_default("小明", "早上好") |
# 5. 函数与异常:
在函数中使用异常处理可以有效地处理错误,确保程序不会因为异常而崩溃。
| |
| def divide_numbers(a, b): |
| try: |
| result = a / b |
| print("结果:", result) |
| except ZeroDivisionError: |
| print("除数不能为零") |
| |
| |
| divide_numbers(10, 2) |
| divide_numbers(5, 0) |
# 6. Python 模块:
模块是包含 Python 代码的文件,可以通过导入模块来使用其中定义的函数和变量。
| |
| |
| |
| |
| |
| |
| import my_module |
| |
| my_module.greet("Alice") |
简单的一个思维导图
| graph TD |
| A[Python函数与模块] --> B[1. Python函数] |
| A --> C[2. Python变量范围] |
| A --> D[3. 函数调用] |
| A --> E[4. 函数的默认参数] |
| A --> F[5. 函数与异常] |
| A --> G[6. Python模块] |
| B --> B1[定义一个简单的函数] |
| B --> B2[接受两个参数并返回它们的和] |
| B --> B3[在函数内部定义的局部变量] |
| B --> B4[在函数外部访问全局变量] |
| C --> C1[全局变量] |
| C --> C2[局部变量] |
| D --> D1[定义一个简单的函数] |
| D --> D2[调用函数并输出结果] |
| E --> E1[带有默认参数的函数] |
| E --> E2[提供自定义的问候语] |
| F --> F1[尝试除以零并捕获异常] |
| F --> F2[正常情况] |
| F --> F3[引发除零异常] |
| G --> G1[创建一个名为 my_module.py 的模块] |
| G --> G2[包含一个简单的函数] |
| G --> G3[在另一个文件中导入模块并使用函数] |
# 4)Python 序列数据
# 1. 字符串类型:
字符串是由字符组成的序列,可以使用单引号或双引号括起来。字符串是不可变的,即不能直接修改其内容。
| |
| my_string = "Hello, World!" |
| |
| |
| print(my_string) |
# 2. 字符串函数:
字符串有许多内建函数可用于处理文本,包括查找子串、切片、转换大小写等。
| |
| text = "Python is powerful!" |
| substring = "is" |
| |
| |
| position = text.find(substring) |
| print("子串在位置:", position) |
| |
| |
| uppercase_text = text.upper() |
| print("大写字符串:", uppercase_text) |
# 3. 列表类型:
列表是一种有序的可变序列,可以包含不同类型的元素。列表使用方括号定义,并可以进行增删改查操作。
| |
| my_list = [1, 2, 3, "apple", "banana"] |
| |
| |
| print(my_list) |
| |
| |
| my_list.append("orange") |
| print("添加元素后的列表:", my_list) |
# 4. 元组类型:
元组是一种有序的不可变序列,用于存储多个元素。元组使用圆括号定义,一旦创建,其内容不可更改。
| |
| my_tuple = (1, 2, "apple", "banana") |
| |
| |
| print(my_tuple) |
# 5. 字典类型:
字典是一种无序的键值对集合,用于存储和检索数据。字典使用花括号定义,每个键值对用冒号分隔。
| |
| my_dict = {"name": "John", "age": 25, "city": "New York"} |
| |
| |
| print(my_dict) |
| |
| |
| print("姓名:", my_dict["name"]) |
# 6. 字典与函数:
字典可以作为函数的参数和返回值,通过字典传递多个参数或处理多个返回值。
| |
| def display_info(person_info): |
| print("姓名:", person_info["name"]) |
| print("年龄:", person_info["age"]) |
| print("城市:", person_info["city"]) |
| |
| |
| person_data = {"name": "Alice", "age": 30, "city": "London"} |
| display_info(person_data) |
简单的一个思维导图
| graph LR |
| A[Python序列数据] --> B[字符串类型] |
| A --> C[字符串函数] |
| A --> D[列表类型] |
| A --> E[元组类型] |
| A --> F[字典类型] |
| A --> G[字典与函数] |
# 5)Python 面向对象
# 1. 类与对象:
在 Python 中,类是一种用于创建对象的蓝图,而对象是类的实例。类定义了对象的属性和方法。
| |
| class Dog: |
| |
| species = "Canine" |
| |
| |
| def bark(self): |
| print("Woof!") |
| |
| |
| my_dog = Dog() |
| |
| |
| print("狗的种类:", my_dog.species) |
| my_dog.bark() |
# 2. 类的方法:
类的方法是在类中定义的函数,用于执行特定的操作。方法的第一个参数通常是 self
,表示对象本身。
| |
| class Calculator: |
| |
| def __init__(self, value=0): |
| self.result = value |
| |
| |
| def add(self, x): |
| self.result += x |
| |
| |
| def subtract(self, x): |
| self.result -= x |
| |
| |
| my_calculator = Calculator() |
| my_calculator.add(5) |
| my_calculator.subtract(3) |
| print("计算结果:", my_calculator.result) |
# 3. 对象初始化:
对象初始化是通过特殊的 __init__
方法来进行的,该方法在对象创建时自动调用,用于设置对象的初始状态。
| |
| class Person: |
| |
| def __init__(self, name, age): |
| self.name = name |
| self.age = age |
| |
| |
| person1 = Person("Alice", 25) |
| person2 = Person("Bob", 30) |
| |
| |
| print("姓名:", person1.name, "年龄:", person1.age) |
| print("姓名:", person2.name, "年龄:", person2.age) |
# 4. 类的继承:
继承是面向对象编程的重要概念,允许一个类继承另一个类的属性和方法。子类可以重写或扩展父类的方法。
| |
| class Animal: |
| def speak(self): |
| print("动物发出声音") |
| |
| |
| class Dog(Animal): |
| |
| def speak(self): |
| print("狗叫:汪汪汪") |
| |
| |
| my_dog = Dog() |
| my_dog.speak() |
简单的一个思维导图
| graph TD |
| A[Python面向对象] --> B[类与对象] |
| A --> C[类的方法] |
| A --> D[对象初始化] |
| A --> E[类的继承] |
| B --> F[定义类] |
| B --> G[创建对象] |
| C --> H[定义方法] |
| C --> I[调用方法] |
| D --> J[初始化方法] |
| E --> K[定义父类] |
| E --> L[定义子类] |
| E --> M[继承关系] |
| E --> N[重写或扩展方法] |
# 6)Python 文件操作
# 1. 写文本文件:
在 Python 中,使用内建的 open()
函数以及文件对象的 write()
方法可以方便地写入文本文件。
| |
| with open("example.txt", "w") as file: |
| |
| file.write("Hello, this is a text file.\n") |
| file.write("Writing some more text.") |
| |
| |
# 2. 读文本文件:
通过 open()
函数以及文件对象的 read()
或 readline()
方法,可以读取文本文件中的内容。
| |
| with open("example.txt", "r") as file: |
| |
| content = file.read() |
| print("文件内容:\n", content) |
| |
| |
| file.seek(0) |
| lines = file.readlines() |
| print("逐行读取:\n", lines) |
# 3. 文件编码:
在打开文件时,可以指定文件的编码格式,以确保正确地处理文本文件中的字符集。
| |
| with open("example.txt", "r", encoding="utf-8") as file: |
| content = file.read() |
| print("文件内容:\n", content) |
# 4. 文件指针:
文件指针是一个标记,指示文件中当前读取或写入位置的位置。在 Python 中,可以使用 seek()
方法来移动文件指针的位置。
| |
| with open("example.txt", "r") as file: |
| |
| content = file.read() |
| print("文件内容:\n", content) |
| |
| |
| file.seek(0) |
| lines = file.readlines() |
| print("逐行读取:\n", lines) |
| |
| |
| file.seek(20) |
| partial_content = file.read(10) |
| print("部分内容:\n", partial_content) |
简单的一个思维导图
| graph TD |
| A[Python文件操作] --> B[写文本文件] |
| A --> C[读文本文件] |
| A --> D[文件编码] |
| A --> E[文件指针] |