Python复习总结——期末复习知识点总结大全
第1章 程序设计基本方法
1.1 计算机的概念
- 定义:计算机是根据指令操作数据的设备,具备功能性和可编程性两个基本特性。
- 功能性:对数据的操作,表现为数据计算、输入输出处理和结果存储等。
- 可编程性:可以根据一系列指令自动地、可预测地、准确地完成操作者的意图。
- 计算机技术的发展阶段:
- 计算机系统结构阶段(1946-1981年):以全球首台数字计算机ENIAC诞生为标志。
- 计算机网络和视窗阶段(1982-2007年):以面向全球子网间组网的TCP/IP网络协议的标准化为标志。
- 复杂信息系统阶段(2008年至今):以安卓(Andriod)开源移动操作系统的发布为起点。
- 人工智能阶段(约20年后某个时期开始):随着深度学习、开源硬件、智能机器人等技术的发展。
1.2 程序设计语言
- 分类:机器语言、汇编语言和高级语言。
- 高级语言:接近自然语言的一种计算机程序设计语言,可以更容易地描述计算问题并利用计算机解决计算问题。
- 编译和解释:
- 编译:将源代码转换成目标代码的过程。
- 解释:将源代码逐条转换成目标代码同时逐条运行目标代码的过程。
1.3 Python语言概述
- 诞生:1990年,由Guido van Rossum设计并领导开发。
- 特点:
- 语法简洁
- 与平台无关
- 粘性扩展
- 开源理念
- 通用灵活
- 强制可读
- 支持中文
- 模式多样
- 类库丰富
1.4 Python语言开发环境
- IDLE:Python软件包自带的集成开发环境,支持交互式和批量式两种编程方式。
- 安装Python解释器:从Python官方网站下载并安装。
1.5 程序的基本编写方法
- IPO方法:输入(Input)、处理(Process)、输出(Output)。
- 程序的调试和测试:通过单元测试和集成测试评估程序运行结果的正确性。
1.6 Python语言的版本更迭
- Python 2.x:已经是遗产,不再推荐学习。
- Python 3.x:当前和未来的主要版本,推荐学习。
第2章 Python程序实例解析
2.1 实例1:温度转换
- 程序功能:实现摄氏温度和华氏温度之间的转换。
- 代码示例:
TempStr = input("请输入带有符号的温度值:") if TempStr[-1] in ['F', 'f']: C = (eval(TempStr[0:-1]) - 32) / 1.8 print("转换后的温度是:{:.2f}C".format(C)) elif TempStr[-1] in ['C', 'c']: F = 1.8 * eval(TempStr[0:-1]) + 32 print("转换后的温度是:{:.2f}F".format(F)) else: print("输入格式错误")
2.2 Python程序语法元素分析
- 程序的格式框架:采用严格的“缩进”来表明程序的格式框架。
- 注释:用于提高代码的可读性。
- 命名与保留字:变量名必须是合法的标识符,不能与Python的保留字相同。
- 字符串:用两个双引号""或者单引号’'括起来的一个或多个字符。
- 分支语句:if、elif、else。
- 循环语句:while、for。
- 函数:def保留字用于定义函数。
2.3 实例2:Python蟒蛇绘制
- 程序功能:使用turtle库绘制一条蟒蛇。
- 代码示例:
import turtle # 导入turtle图形库
# 设置绘图窗口的大小为650x350像素,窗口左上角距离屏幕左上角的水平和垂直距离分别为200像素
turtle.setup(650, 350, 200, 200)
# 提起画笔,这样移动时不会在画布上留下痕迹
turtle.penup()
# 向后移动250像素,为绘制图形设定起始位置
turtle.fd(-250)
# 放下画笔,开始绘制
turtle.pendown()
# 设置画笔的粗细为25像素
turtle.pensize(25)
# 设置画笔颜色为紫色
turtle.pencolor("purple")
# 设置海龟的方向为-40度,即向左上方倾斜
turtle.seth(-40)
# 绘制图形的主体部分,循环4次以创建对称图案
for i in range(4):
turtle.circle(40, 80) # 绘制一个半径为40像素,圆周角为80度的圆弧
turtle.circle(-40, 80) # 绘制一个半径为-40像素(方向相反),圆周角为80度的圆弧
turtle.circle(40, 80 / 2) # 绘制一个半径为40像素,圆周角为40度的圆弧
# 向前移动40像素,为绘制尾部做准备
turtle.fd(40)
# 绘制一个半径为16像素,圆周角为180度的圆弧,形成尾部的一部分
turtle.circle(16, 180)
# 向前移动40 * 2 / 3像素,完成尾部的绘制
turtle.fd(40 * 2 / 3)
# 完成绘图
turtle.done()
解释:
turtle.setup()
:用于设置绘图窗口的大小和位置。turtle.penup()
和turtle.pendown()
:控制画笔的提起和放下,提起时移动不绘图,放下时移动绘图。turtle.pensize()
:设置画笔的粗细。turtle.pencolor()
:设置画笔的颜色。turtle.seth()
:设置海龟的方向,以角度表示。turtle.circle()
:绘制圆弧,参数为半径和圆周角。turtle.fd()
:向前移动指定距离。turtle.done()
:完成绘图,保持窗口打开。
这段代码绘制了一个类似蟒蛇的图案,通过组合圆弧和直线移动来实现。
2.4 turtle语法元素分析
- 绘图坐标体系:turtle库在画布上绘制图形,有前进、后退、旋转等行为。
- 画笔控制函数:penup()、pendown()、pensize()、pencolor()。
- 形状绘制函数:fd()、circle()。
以下是第3章“基本数据类型”的内容,以Markdown格式呈现,包括您提供的所有小节和细节:
第3章 基本数据类型
3.1 数字类型
-
整数类型:int
- 没有取值范围限制,可以表示任意大小的整数。
-
浮点数类型:float
- 采用科学计数法表示,用于表示带有小数部分的数值。
-
复数类型:complex
- 由实部和虚部组成,实部和虚部都是浮点数,用于表示复数。
3.2 数字类型的操作
-
内置的数字类型转换函数
int()
:将其他类型转换为整数。float()
:将其他类型转换为浮点数。complex()
:将其他类型转换为复数。
-
内置的数值运算函数
abs()
:返回数值的绝对值。divmod()
:返回两个数相除的商和余数。pow()
:返回数值的幂。round()
:对数值进行四舍五入。max()
:返回多个数值中的最大值。min()
:返回多个数值中的最小值。
3.3 字符串类型及其操作
-
字符串的定义
- 用两个双引号
""
或者单引号''
括起来的一个或多个字符。
- 用两个双引号
-
字符串的索引和切片
- 通过索引和切片访问字符串中的字符,索引从0开始。
-
字符串的操作符
+
:连接两个字符串。*
:重复字符串多次。in
:检查一个字符串是否是另一个字符串的子串。
-
内置的字符串处理函数
len()
:返回字符串的长度。str()
:将其他类型转换为字符串。chr()
:根据Unicode编码返回对应的字符。ord()
:返回字符的Unicode编码。hex()
:将整数转换为十六进制字符串。oct()
:将整数转换为八进制字符串。
-
内置的字符串处理方法
upper()
:将字符串转换为大写。lower()
:将字符串转换为小写。find()
:查找子串在字符串中的位置。replace()
:替换字符串中的子串。split()
:将字符串分割为列表。join()
:将列表连接为字符串。
3.4 字符串类型的格式化
-
format()
方法- 用于字符串的格式化输出,可以插入变量和表达式。
-
格式控制标记
<填充>
:指定填充字符。<对齐>
:指定对齐方式(左对齐、右对齐、居中)。<宽度>
:指定字段的宽度。<>
:(此处应为占位符说明,实际使用中不直接出现,用于表示格式说明符的开始和结束)<精度>
:指定浮点数的小数位数或字符串的最大长度。<类型>
:指定转换类型(如整数、浮点数、字符串等)。
3.5 实例4:文本进度条
- 程序功能:在控制台输出动态刷新的文本进度条。
- 代码示例:
import time # 导入time模块,用于实现延迟
scale = 50 # 设置进度条的总长度(即最大迭代次数)
print("执行开始") # 输出开始执行的提示
# 使用for循环遍历从0到scale(包括scale)
for i in range(scale + 1):
a, b = '*' * i, '' * (scale - i) # 生成当前进度的字符串a和剩余空白的字符串b
c = (i / scale) * 100 # 计算当前进度的百分比
# 使用\r(回车符)在同一行刷新显示进度条
# {:^3.0f}格式化百分比为整数,居中显示,宽度为3
# [{}{}]格式化进度条,其中a是已完成的星号部分,b是剩余的空白部分
print("\r{:^3.0f}[{}{}]".format(c, a, b), end='')
time.sleep(0.1) # 暂停0.1秒,以便观察进度条的变化
print("\n执行结束") # 输出执行结束的提示,并换行
第4章 程序的控制结构
4.1 程序的基本结构
程序的基本结构决定了代码如何被执行,主要分为以下三种:
-
顺序结构:
- 代码按照从上到下的顺序逐行执行,这是最基本的程序执行方式。
- 示例:
print("程序开始") x = 10 y = 20 print("x + y =", x + y) print("程序结束")
-
分支结构:
- 根据条件判断,选择执行不同的代码块。这使得程序能够根据输入或状态做出决策。
- 通过
if
、if-else
、if-elif-else
语句实现。
-
循环结构:
- 重复执行一段代码,直到满足某个条件。这对于需要重复操作的任务非常有用。
- 通过
while
循环和for
循环实现。
4.2 程序的分支结构
分支结构允许程序根据条件执行不同的代码路径。
-
单分支结构:
- 使用
if
语句,当条件为真时执行特定代码块。 - 示例:
x = 15 if x > 10: print("x大于10")
- 使用
-
二分支结构:
- 使用
if-else
语句,提供一个条件为真时执行的代码块和一个条件为假时执行的代码块。 - 示例:
x = 5 if x > 10: print("x大于10") else: print("x不大于10")
- 使用
-
多分支结构:
- 使用
if-elif-else
语句,处理多个条件,依次判断每个条件,执行第一个为真的条件对应的代码块。 - 示例:
x = 12 if x > 20: print("x大于20") elif x > 10: print("x大于10但小于或等于20") else: print("x小于或等于10")
- 使用
4.3 循环结构
循环结构用于重复执行代码块。
-
while循环:
- 在条件为真时重复执行代码块,适用于不确定循环次数的情况。
- 示例:
count = 0 while count < 5: print("计数:", count) count += 1
-
for循环:
- 遍历序列(如列表、字符串)中的每个元素,适用于已知循环次数或需要遍历集合的情况。
- 示例:
fruits = ["苹果", "香蕉", "樱桃"] for fruit in fruits: print(fruit)
4.4 异常处理
异常处理用于捕获和处理运行时发生的错误,防止程序崩溃。
-
try-except语句:
- 尝试执行一段代码,并在发生异常时捕获并处理它。
- 示例:
try: x = 1 / 0 except ZeroDivisionError: print("不能除以零")
-
异常类型:
- Python中有多种内置异常类型,如
NameError
(未定义变量)、TypeError
(类型不匹配)等。 - 通过指定异常类型,可以更精确地捕获和处理特定错误。
- Python中有多种内置异常类型,如
第5章 函数和代码复用
5.1 函数的定义和调用
-
定义函数
- 使用
def
保留字来定义函数,后跟函数名和参数列表。 - 示例:
def my_function(): print("这是一个函数")
- 使用
-
调用函数
- 通过函数名加括号的方式来调用函数。
- 示例:
my_function() # 输出:这是一个函数
5.2 函数的参数和返回值
-
位置参数
- 按照位置顺序传递参数,参数的位置和顺序必须一致。
- 示例:
def add(a, b): return a + b result = add(3, 5) # result的值为8
-
关键字参数
- 通过参数名传递参数,参数的顺序可以不一致。
- 示例:
def greet(name, greeting): print(f"{greeting}, {name}!") greet(name="Alice", greeting="Hello") # 输出:Hello, Alice!
-
默认参数
- 为参数提供默认值,如果调用时没有传递该参数,则使用默认值。
- 示例:
def multiply(a, b=2): return a * b result = multiply(3) # result的值为6
-
可变参数
*args
用于接收任意数量的位置参数,以元组的形式存储。**kwargs
用于接收任意数量的关键字参数,以字典的形式存储。- 示例:
def var_args(*args, **kwargs): print(args) print(kwargs) var_args(1, 2, 3, a=4, b=5) # 输出:(1, 2, 3) 和 {'a': 4, 'b': 5}
-
返回值
- 使用
return
语句返回结果,可以返回多个值(以元组的形式)。 - 示例:
def subtract(a, b): return a - b result = subtract(10, 5) # result的值为5
- 使用
5.3 lambda函数
-
定义
- 用于创建匿名函数,即没有名字的函数。
-
语法
lambda 参数: 表达式
- 示例:
add = lambda x, y: x + y result = add(3, 5) # result的值为8
5.4 datetime库的使用
-
获取当前日期和时间
from datetime import datetime
now = datetime.now()
- 示例:
from datetime import datetime now = datetime.now() print(now) # 输出当前日期和时间
-
格式化日期和时间
- 使用
strftime()
方法将日期和时间格式化为字符串。 - 示例:
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S") print(formatted_now) # 输出格式化后的日期和时间
- 使用
5.5 函数递归
-
定义
- 函数直接或间接调用自身。
-
递归的基本条件
- 基准情况:递归必须有一个明确的结束条件,否则会导致无限递归。
- 递归情况:函数在调用自身时,必须向基准情况靠近。
- 示例:
def factorial(n): if n == 1: return 1 # 基准情况 else: return n * factorial(n - 1) # 递归情况 result = factorial(5) # result的值为120
第6章 组合数据类型
您提供的关于序列类型的定义和类型是非常准确的。以下是对这部分内容的详细阐述,以Markdown格式呈现:
6.1 序列类型
-
定义
- 序列类型是包含多个元素的数据类型,这些元素之间有顺序关系。在序列中,每个元素都有一个位置(或索引),可以通过这个位置来访问或修改元素。
-
类型
-
字符串(String)
- 由字符组成的序列,是不可变的。这意味着一旦字符串被创建,它的内容就不能被改变。字符串是Python中最常用的数据类型之一,用于表示文本数据。
- 示例:
"Hello, World!"
-
元组(Tuple)
- 由多个元素组成的不可变序列。元组中的元素可以是不同类型的,且一旦元组被创建,它的元素就不能被修改、==添加或删除。==元组通常用于存储不需要改变的数据集,或者作为函数的返回值,当需要返回多个值时。
- 示例:
(1, 2, 3, "a", "b", "c")
-
列表(List)
- 由多个元素组成的可变序列。列表中的元素可以是不同类型的,且列表的大小是动态的,可以随时添加、删除或修改元素。列表是Python中最灵活的数据类型之一,广泛用于存储和操作数据集。
- 示例:
[1, 2, 3, "apple", "banana"]
-
6.2 列表类型
-
定义
- 一个可变序列,可以动态添加、删除元素。
-
操作
append(element)
:在列表末尾添加一个新的元素。extend(iterable)
:通过添加一个可迭代对象的所有元素来扩展列表。insert(index, element)
:在指定位置插入一个元素。remove(value)
:移除列表中第一个匹配的元素。pop([index])
:移除列表中指定位置的元素,如果不指定位置,则移除并返回最后一个元素。clear()
:移除列表中的所有元素。
-
示例
my_list = [1, 2, 3] my_list.append(4) # [1, 2, 3, 4] my_list.extend([5, 6]) # [1, 2, 3, 4, 5, 6] my_list.insert(2, 'a') # [1, 2, 'a', 3, 4, 5, 6] my_list.remove('a') # [1, 2, 3, 4, 5, 6] my_list.pop() # 移除并返回6,列表变为[1, 2, 3, 4, 5] my_list.clear() # 移除所有元素,列表变为[]
6.3 元组类型
-
定义
- 一个不可变序列,一旦创建就不能修改。
-
用途
- 用于存储不需要修改的数据,如函数的多个返回值、作为字典的键等。
-
示例
my_tuple = (1, 2, 3) # my_tuple[1] = 4 # 会报错,因为元组是不可变的
6.4 字典类型
-
定义
- 通过键(key)来访问值(value)的数据类型,键必须是唯一的。
-
操作
keys()
:返回一个包含所有键的视图。values()
:返回一个包含所有值的视图。items()
:返回一个包含所有键值对的视图。get(key, default=None)
:返回指定键的值,如果键不存在,则返回默认值。update(other_dict)
:更新字典,添加或覆盖键值对。
-
示例
my_dict = {'a': 1, 'b': 2, 'c': 3} keys = my_dict.keys() # dict_keys(['a', 'b', 'c']) values = my_dict.values() # dict_values([1, 2, 3]) items = my_dict.items() # dict_items([('a', 1), ('b', 2), ('c', 3)]) value = my_dict.get('b', 0) # 2 my_dict.update({'d': 4, 'b': 5}) # {'a': 1, 'b': 5, 'c': 3, 'd': 4}
6.5 实例11:Python之禅
-
程序功能
- 展示Python之禅,介绍编写优美代码的基本原则。
-
代码示例
import this
运行上述代码后,Python解释器会输出“Python之禅”,这是一段由Tim Peters编写的关于编写Python代码的指导原则,强调了代码的可读性、简洁性和明确性。
通过这些内容,您可以了解Python中的组合数据类型,包括列表、元组和字典的基本用法和操作,以及一个有趣的实例“Python之禅”。这些知识是编程中的基础,对于掌握Python编程非常重要。
以下是您提供的第7章“文件和数据格式化”的内容,以完整的Markdown格式呈现,包括所有小节和细节:
第7章 文件和数据格式化
7.1 文件的操作
-
打开文件
- 使用
open()
函数来打开文件,返回一个文件对象。
- 使用
-
文件模式
'r'
:只读模式(默认)。'w'
:写入模式,会覆盖文件内容。'a'
:追加模式,在文件末尾添加内容。'b'
:二进制模式,可以与其他模式结合使用(如'rb'
、'wb'
)。
-
读写文件
read()
:读取整个文件内容。write()
:将字符串写入文件。readline()
:读取文件的一行。readlines()
:读取文件的所有行,返回一个列表。writelines()
:将字符串列表写入文件。
-
关闭文件
- 使用
close()
方法来关闭文件,释放资源。
- 使用
7.2 PIL库的使用
-
定义
- PIL(Python Imaging Library)是用于图像处理的库,现在通常使用其分支Pillow。
-
安装
- 使用
pip install pillow
来安装Pillow库。
- 使用
-
基本操作
open()
:打开图像文件。show()
:显示图像。save()
:保存图像。convert()
:转换图像模式(如RGB、灰度等)。thumbnail()
:创建图像的缩略图。
7.3 一二维数据的格式化和处理
-
一维数据
- 列表、元组等,表示一维数据结构。
-
二维数据
- 列表的列表、numpy数组等,表示二维数据结构。
-
CSV格式
- 逗号分隔值文件,用于存储表格数据。
7.4 CSV格式的HTML展示
-
程序功能
- 将CSV文件转换为HTML表格并展示。
-
代码示例
import csv html = "<table border='1'>\n" with open('data.csv', mode='r', newline='') as file: reader = csv.reader(file) for row in reader: html += "<tr>" for cell in row: html += "<td>{}</td>".format(cell) html += "</tr>\n" html += "</table>" print(html)
- 该代码读取
data.csv
文件,将其内容转换为HTML表格格式,并打印出来。
- 该代码读取
7.5 高维数据的格式化
-
定义
- 超过二维的数据,如三维数组、多维数据集等。
-
存储格式
- JSON:JavaScript对象表示法,用于存储和交换文本信息。
- XML:可扩展标记语言,用于存储和传输数据。
7.6 json库的使用
-
定义
json
库用于处理JSON格式的数据。
-
基本操作
loads()
:将JSON字符串解析为Python对象。dumps()
:将Python对象转换为JSON字符串。load()
:从文件读取JSON数据并解析为Python对象。dump()
:将Python对象写入文件,以JSON格式存储。
第8章 程序设计方法论
8.1 计算思维
-
定义
- 计算思维是一种抽象和自动化的思维方式,通过计算机科学的原理和方法来解决问题。
-
应用
- 计算思维可以应用于各个领域,通过抽象问题、设计算法、编写程序等步骤来解决问题。
8.2 实例15:体育竞技分析
-
程序功能
- 模拟体育竞技比赛,并分析比赛结果。
-
代码示例
import random def simOneGame(probA, probB): scoreA, scoreB = 0, 0 serving = "A" while not gameOver(scoreA, scoreB): if serving == "A": if random.random() < probA: scoreA += 1 else: serving = "B" else: if random.random() < probB: scoreB += 1 else: serving = "A" return scoreA, scoreB def gameOver(a, b): return a == 15 or b == 15 def simNGames(n, probA, probB): winsA, winsB = 0, 0 for i in range(n): scoreA, scoreB = simOneGame(probA, probB) if scoreA > scoreB: winsA += 1 else: winsB += 1 return winsA, winsB def main(): probA, probB, n = eval(input("请输入选手A的能力值 (0-1): ")), eval(input("请输入选手B的能力值 (0-1): ")), eval(input("模拟比赛的场次: ")) winsA, winsB = simNGames(n, probA, probB) print("选手A获胜{}场比赛,占比{:.2%}".format(winsA, winsA / n)) print("选手B获胜{}场比赛,占比{:.2%}".format(winsB, winsB / n)) main()
- 该程序模拟了两名选手的体育竞技比赛,通过输入选手的能力值和模拟比赛的场次,输出每名选手的获胜场次和占比。
8.3 自顶向下和自底向上
-
自顶向下设计
- 从整体到局部的设计方法,先考虑问题的整体结构和功能,然后逐步细化每个部分。
-
自底向上执行
- 从局部到整体的执行方法,先实现和测试每个局部功能,然后逐步集成和测试整体功能。
8.4 pyinstaller库的使用
-
定义
pyinstaller
是一个将Python脚本打包成可执行文件的工具。
-
安装
- 使用
pip install pyinstaller
来安装pyinstaller
库。
- 使用
-
使用
- 使用
pyinstaller -F script.py
命令将script.py
脚本打包成一个可执行文件。-F
选项表示生成一个单独的可执行文件。
- 使用
8.5 计算生态和模块编程
-
定义
- 计算生态是围绕Python程序设计的开放资源,包括标准库、第三方库、工具等。
-
模块编程
- 利用第三方库进行编程,可以提高开发效率,减少重复劳动,实现代码复用。
8.6 Python第三方库的安装
- pip工具
pip
是Python的包管理工具,用于安装和管理Python库和工具。- 使用
pip install package_name
命令来安装指定的Python库。
通过这些内容,您可以了解计算思维的概念和应用、体育竞技分析的程序设计实例、自顶向下和自底向上的设计方法、pyinstaller
库的使用、计算生态和模块编程的概念以及Python第三方库的安装方法。这些知识对于掌握程序设计方法论和提高编程能力非常重要。