Python基础教程-字典和集合PPT学习课件

合集下载

python学习课件(共73张PPT)

python学习课件(共73张PPT)
• ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非 常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功, 究其原因,Guido 认为是非开放造成的。Guido 决心在 Python 中避免这一错 误(的确如此,Python 与其它的语言如C、C++和Java结合的非常好)。同 时,他还想实现在 ABC 中闪现过但未曾实现的东西。就这样,Python在 Guido手中诞生了。
Python语言特点-可扩展、动态性
可扩展性
• Python是采用C开发的语言,因此可以使用C扩展Python ,可以给Python添加新的模块、新的类。同时Python 可以嵌入C、C++语言开发项目中,使程序具备脚本 语言的特性。
动态性 • Python与JavaScript、PHP、Perl等语言类似,它不需要
• Python语言具有很强的面向对象特性,而且简化了面向 对象的实现,它消除了保护类型、抽象类、接口等面向 对象的元素,使得面向对象的概念更容易理解。
Python语言特点-内置数据结构
• Python提供了一些内置的数据结构,这些数据结构实现 了类似Java中集合类的功能。内置数据结构的出现简化了 程序设计。
• 工具2to3( • )几乎能将任何Python 2程序自动转换为等价的Python 3程序。
2.Python 基本语法
Python的编码规范
1、命名规则
• Python语言有一套自己的命名规则。命名规则并不 是语法规定,只是一种习惯用法。
(1) 变量名、模块名、包名
• 通常采用小写,可使用下划线。 • 例如:
rulemodule.py #模块名,即文件名 _rule=’rule information’ #_rule变量名,通常前缀有一个

零基础学Python - 字典的基础PPT

零基础学Python - 字典的基础PPT
字典的合而提供的一种数据类型
举例:检索学生信息。
“<键><值>对”。 键(即身份证号码) 值(即学生信息)。
“键值对”例子
姓名和电话号码 用户名和密码 国家名称和首都等。
字典的概念
映射: 通过任意键值查找集合中值信息的过程 python中通过字典实现映射 字典是键值对的集合
该集合以键为索引 同一个键信息对应一个值
简单的字典的实例
>>>passwd = {"China":"BigCountry", "Korean":"SmallCountry", "France":"MediumCountry"} >>>print passwd {'Korean': 'SmallCountry', 'China': 'BigCountry', 'France': 'MediumCountry'}
字典类型与序列类型的区别
存取和访问方式不同 键的类型不同
序列类型只能用数字类型的键 字典类型可以用其他对象类型作键
排列方式不同
序列类型保持了元素的相对关系 而字典中的数据是无序排列的。
映射方式不同
序列类型通过地址映射到值 字典类型通过键直接映射到值

(完整版)Python学习课件

(完整版)Python学习课件

100%
浮点数类型
浮点数用于表示实数,即带有小 数点的数字。Python中的浮点数 类型通常是双精度浮点数。
80%
数字类型的运算
Python支持基本的数学运算,如 加、减、乘、除和取余等。
字符串类型及操作
字符串定义
字符串是由零个或多个字符组 成的一种数据类型,用引号括 起来表示。
字符串操作
Python提供了丰富的字符串操 作方法,如连接、截取、查找 、替换等。
(完整版)Python学习课件
汇报人:
2023-12-21

CONTENCT

• Python基础知识 • Python数据类型与运算符 • Python流程控制语句 • Python函数与模块 • Python面向对象编程思想 • Python文件操作与数据处理
01
Python基础知识
Python简介与发展历程
字符串格式化
可以使用格式化字符串来插入 变量或表达式的值,生成动态 的字符串内容。
列表、元组和字典等数据结构
列表
列表是一种有序的数据结构,可 以包含任意类型的元素,且元素
之间可以重复。
元组
元组与列表类似,也是一种有序的 数据结构,但元组是不可变的,即 创建后不能修改。
字典
字典是一种无序的数据结构,用于 存储键值对,其中键必须是不可变 类型(如整数、字符串或元组)。
03
Python流程控制语句
条件语句:if-else结构
if语句
elif语句
用于根据条件判断执行相应的代码块 。
用于在if语句中添加额外的条件判断 。
else语句
与if语句配合使用,当if语句条件不满 足时执行else代码块。

《python学习》课件

《python学习》课件
while)等。
函数
Python中的函数是一段 可重复使用的代码块, 可以通过函数名来调用
执行。
参数
Python中的函数可以接 受位置参数、默认参数 、可变参数和关键字参
数等。
返回值
Python中的函数可以返 回一个或多个值,通过
return语句返回。
02 Python进阶
Python面向对象编程
03 Python在数据分析中的应用
Python的数据处理工具:Pandas
Pandas介绍
数据读写
Pandas是Python中用于数据处理和分析的 核心库,提供了数据结构和函数,使得数 据清洗、转换和分析变得简单高效。
Pandas支持多种格式的数据读写,如CSV 、Excel、SQL等,方便用户导入导出数据 。
码表达想法。
特点
Python是一种解释型、高级编程 语言,具有动态类型、面向对象和 函数式编程特性。
应用领域
Python广泛应用于Web开发、数据 科学、人工智能、机器学习、网络 爬虫、系统自动化、游戏开发等领 域。
Python的语法和基础数据类型
01
02
03
04
语法
Python的语法简洁明了,代 码块通过缩进来划分,无需使

Python数据分析项目:用二
详细描述
掌握数据分析的基本流程和方法,能够使用Python进行数 据清洗、处理、分析和可视化。
了解数据分析的基本概念、流程和方法;掌握Python中常 用的数据分析库,如NumPy、Pandas和Matplotlib等; 学习如何对数据进行清洗、处理、分析和可视化;了解常 见的数据分析模型和方法,如聚类分析、分类和回归分析 等;通过实际案例,掌握用户行为分析的流程和方法,包 括数据采集、处理、分析和可视化等。

第7章 python字典和集合_python基础,快速入门_课件教程

第7章 python字典和集合_python基础,快速入门_课件教程
注意:列表和字典的嵌套层级不应太多,否则有碍程序的简洁性和清晰度。
字典的相关方法 SECTION
字典的相关方法
一、fromkeys()方法 创建一个新字典,其中包含指定的键,而每个键对应的值为None或指定值。 alien = {}.fromkeys(['name', 'age']) {'name': None, 'age': None} alien.fromkeys(['name', 'age'], 'unknown') {'name': 'unknown', 'age': 'unknown'}
集合的使用
二、移除元素 使用remove ()方法,如果元素不存在,则会发生错误。 thisset = set(("Google", "Runoob", "Taobao")) thisset.remove("Taobao") thisset.remove(“Facebook”) #不存在,会报错
使用discard()移除元素,如果元素不存在则不会报错 thisset.discard("Facebook") # 不存在不会发生错误 此外,使用pop() 方法可以随机删除集合中的一个元素。 thisset.pop()
字典的使用
一、添加键值对 字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名、键及相
关联的值。 alien_0 = {‘color’: ‘green’, ‘points’: 5} alien_0[‘x_position’] = 0 alien_0[‘y_position’] = 25

python基础教程PPT课件

python基础教程PPT课件

模块与包的使用
模块的创建与导入
模块是一个包含Python代码的文件,通过import语句可以导入模块中的函数和类。
包的创建与使用
包是一个包含多个模块的文件夹,通过import语句可以导入包中的模块。
模块和包的搜索路径
Python解释器会在指定的搜索路径中查找模块和包。
异常处理与调试
01
异常的定义与抛出
1. 数据结构:Pandas提供了多种数据结构
2. 数据处理:Pandas提供了丰富的数据处理函 数。如筛选、排序、聚合、分组等
3. 数据导入导出:Pandas支持多种数据格式的 导入和导出。如CSV、Excel、SQL数据库等
4. 数据可视化:Pandas与Matplotlib库结合 使用,可以方便地将数据处理结果进行可视化 展示。
02
try-except语句块
Python中的异常是由语法或运行时错 误引起的异常情况。
使用try-except语句块可以捕获和处 理异常。
03
logging模块与调试
使用logging模块记录程序运行时的 信息,通过设置不同的日志级别可以 输出不同级别的日志信息,方便调试 程序。
文件操作与数据处理
如何跟上Python发展的步伐
01
关注Python社区的最新动态
Python社区非常活跃,你可以通过参加社区活动、阅读社区新闻和博
客来了解最新的Python动态和技术。
02
学习Python的新特性
Python不断推出新的版本和特性,了解和学习这些新特性和版本可以
帮助你更好地跟上Python的发展步伐。
03
实践
只有通过实践才能真正掌握Python。你可以通过编写代码、参与项目

集合与字典.ppt

集合与字典.ppt
... ...
}
但是,在这样定义好类规范并建立的setA所有成 员函数之后,会发现仍然无法建立setA的实例对 象。 例如,如果我们写出下面的变量定义
setA<int> s1; 程序编译时会发生错误,系统将告诉我们:在建 立setA的实例时,遇到了没有给出定义的纯虚函 数void unionWith(const set<int>&)。
举一个例子讨论上面提出的问题。假设我们把 unionWith定义为纯虚函数,函数在类规范里 的原型应该是: virtual void unionWith (const set<T>&) = 0;
在set的实际子类中就必须给出unionWith的实 现,而实际上我们无法给出具有同样函数原型 的函数的实际实现。
// 求并 // 求交 // 求差 // 子集判断 // 相等判断
void deleteAllValues() { slist.deleteAllValues(); };
friend class setListIterator<T>;
};
类9.5 setList类的规范说明
算法与数据结构
19
类setList的构造函数非常自然。其中的无参构造 函数建立空集合,也就是说,建立一个有着空表 slist的集合;复制构造函数建立一个相同的集合, 实际上就是在建立集合时做一次表的复制。这些 函数很容易利用表的构造函数实现。
} }
算法与数据结构
25
removeCurrent是listIterator里定义的方法。显然, 函数remove的时间代价也是O(n)。
算法与数据结构
26
下面看求并集操作的实现。应该注意,setList类的成 员函数unionWith要求它的参数必须是同类型的,也

python基础知识ppt课件

python基础知识ppt课件
按照format字符串将str_time转换为时间元组
time_tuple
将时间元组转换为时间戳
seconds
程序休眠若干秒
38
OS库
os 模块封装了常见的文件和目录操作
方法 mkdir rmdir rename
remove
参数 dir_name dir_name src, dst file_name
import <库名> <库名>.<函数名>
或 from <库名> import <函数名> <函数名>
在一个程序中如果引入多个库,而且用到这几个库 中的同一函数时,可以定义并使用库别名,格式为:
import <库名> as <库别名> <库别名>.<函数名>
31
(3)自定义函数要先定义,再调用
练习: 创建求两个数平均值的函数
32
❖ 程序结构
1、分支结构
顺序 分支 循环
双分支结构的语法形式为 if 条件表达式: 语句块 else: 语句块
33
2、循环结构
(1)for 循环(遍历循环 )
通常用range() 函数代替
34
(2)while 循环(条件循环 )
while语句的语法形式为 while 条件表达式: 语句块
Matplotlib库
绘图库,常用其中的pyplot模块 ❖ plt.plot(value_list) ❖plt.plot(x_list, y_list) ❖ plt.show() ❖plt.subplot(row_count, col_count, current_pos)

Python程序设计第三章常用数据结构.ppt

Python程序设计第三章常用数据结构.ppt

Python程序设计第三章常用数据结构.ppt 幻灯片 1:Python 程序设计第三章常用数据结构主讲人姓名幻灯片 2:目录列表(List)元组(Tuple)字典(Dictionary)集合(Set)幻灯片 3:列表(List)列表是 Python 中最基本的数据结构之一。

列表中的元素可以是不同的数据类型,如整数、字符串、甚至其他列表。

列表使用方括号``来定义,元素之间用逗号分隔。

示例代码:```pythonmy_list = 1, 'hello', 2, 3```幻灯片 4:列表的操作访问列表元素:通过索引值来访问,索引从 0 开始。

切片操作:可以获取列表的一部分。

列表的修改:可以添加、删除、修改元素。

示例代码:```pythonmy_list = 1, 2, 3, 4, 5print(my_list0) 输出 1print(my_list1:3) 输出 2, 3my_listappend(6) 在末尾添加 6my_listpop(2) 删除索引为 2 的元素my_list0 = 0 修改索引为 0 的元素为 0```幻灯片 5:元组(Tuple)元组与列表相似,但元组中的元素不能修改。

元组使用小括号`()`来定义,元素之间用逗号分隔。

示例代码:```pythonmy_tuple =(1, 'hello',(2, 3))```幻灯片 6:元组的操作访问元组元素:与列表相同,通过索引值访问。

元组的切片操作:也与列表类似。

示例代码:```pythonmy_tuple =(1, 2, 3, 4, 5)print(my_tuple0) 输出 1print(my_tuple1:3) 输出(2, 3)```幻灯片 7:字典(Dictionary)字典是一种无序的键值对数据结构。

键必须是唯一的,且不可变的数据类型(如字符串、整数、元组等),值可以是任意数据类型。

字典使用花括号`{}`来定义,键值对之间用冒号`:`分隔,键值对之间用逗号分隔。

(完整版)python学习课件课件

(完整版)python学习课件课件

数据可视化
01
02
03
04
图表绘制
使用matplotlib、seaborn等 库绘制各种图表。
可视化大屏制作
使用Echarts等库制作数据可 视化大屏。
可视化交互
实现图表之间的联动和交互功 能。
可视化配色与排版
注重图表的美观和易读性。
数据建模与分析
统计分析
使用Python进行描述性统计和 推断性统计。
04
Python在Web开发中的应用
Flask框架基础
Flask框架介绍
Flask是一个轻量级的Web框架,使 用Python编写,提供了简单、灵活的 API接口,适合小型到中型规模的 Web应用程序开发。
路由与URL映射
讲解如何使用Flask的路由系统定义 URL路径和处理函数之间的映射关系 。
据挖掘和机器学习,以发现数据中的模式和规律。
AI项目开发实例
总结词
Python是人工智能领域的首选语言,可以 用于机器学习、深度学习等领域。
详细描述
Python有许多人工智能相关的库,如 TensorFlow、PyTorch等,这些库可以帮助 开发者实现机器学习和深度学习算法。使用 Python进行人工智能项目开发可以实现各 种智能任务,如图像识别、语音识别、自然 语言处理等。此外,Python还可以用于构 建机器人控制系统,以实现自动化和智能化 控制。
Scikit-learn库
Scikit-learn是Python中用于机器学习的库,提供了多 种分类、回归和聚类算法,以及模型选择和评估的工 具。
Scikit-learn提供了简单易用的API,支持多种分类器、 回归器和聚类算法,如支持向量机、逻辑回归、决策树 、随机森林等。它还提供了模型选择和评估的工具,如 交叉验证、网格搜索等,方便用户进行机器学习任务的 开发和应用。

python基础教程PPT课件

python基础教程PPT课件
数据可视化
Pandas还提供了用于数据可视化的方法,如plot()和scatterplot()等,可以方便地将数据 处理结果进行可视化展示。
使用numpy进行科学计算
01
02
数值计算
数组操作
03
随机数生成
Numpy提供了大量的数学函数,如 sin()、cos()、exp()等,可以进行高 效的数值计算。
使用scikit-learn进行机器学习
Scikit-learn概述
Scikit-learn是Python中流行的机器学习库之一,提供了许多用于机器学习的工具和算法 。
Scikit-learn的使用
Scikit-learn可以方便地用于分类、回归、聚类等任务,例如使用决策树、支持向量机、 随机森林等算法进行分类。
绘制散点图
Matplotlib提供了scatter()函数 ,可以用于绘制散点图,可以用 于表示数据的分布情况。
绘制柱状图
Matplotlib提供了bar()函数,可 以用于绘制柱状图,可以用于表 示数据的频数分布情况。
05
python在web开发中的应 用
使用flask构建web应用
Flask简介
PyTorch的优缺点
PyTorch是Facebook开源的一个动态 图深度学习框架,非常适合用于快速 实现新的深度学习想法。
PyTorch可以轻松地构建和训练神经 网络模型,支持动态图计算,使得调 试和开发过程更加直观简单。
PyTorch具有灵活、易用、可扩展等 优点,但也存在计算资源消耗较大、 不如TensorFlow成熟等问题。
介绍Django的基本概念,如 应用、视图、模板等,并展 示一个简单的Django应用的 示例代码。

(完整版)python学习课件课件

(完整版)python学习课件课件

模块使用
导入模块后,可以使用 模块中定义的函数、类
和变量等。
自定义模块
可以将自己的Python代 码组织成模块,方便重
用和分享。
包与模块
包是一个包含多个模块 的目录,可以使用相对 导入和绝对导入来引用
包中的模块。
错误处理与异常捕捉
错误类型
Python中常见的错误类型包括 语法错误、运行时错误和逻辑
虚拟环境的搭建
讲解如何使用venv、virtualenv等工具搭建Python 虚拟环境,实现不同项目之间的环境隔离。
变量、数据类型与运算符
80%
变量的定义与使用
介绍Python中变量的概念,以及 如何定义和使用变量。
100%
数据类型
详细讲解Python中的基本数据类 型,包括整数、浮点数、布尔值 、字符串、列表、元组、字典和 集合等。
装饰器原理及应用场景
01
应用场景
02
03
04
日志记录:在函数调用前后自 动记录日志信息。
权限验证:在函数调用前进行 权限验证,确保调用者具有相
应的权限。
性能分析:在函数调用前后记 录时间戳,用于分析函数的性
能瓶颈。
生成器原理及应用场景
01
02
生成器原理:生成器是 一种特殊类型的迭代器 ,它允许你在需要时才 生成值,从而节省内存 空间。生成器函数使用 `yield`关键字而不是 `return`来返回值,并在 每次调用时记住上一次 执行的位置。
应用场景
03
04
05
资源管理:上下文管理 器可以用于自动管理资 源,例如打开和关闭文 件、数据库连接等。
异常处理:通过上下文 管理器可以简化异常处 理逻辑,确保在发生异 常时能够正确地清理资 源。

零基础python入门教程 课件 6干活麻溜的字典和集合

零基础python入门教程  课件     6干活麻溜的字典和集合

干活利落的字典和集合
字典(dictionary)基础知识
•字典的定义
•输出字典
•判断是否在字典里
•清空、取值、更新和设置默认值
字典实例:字典充当〃生日〃数据库
•建立现有的“数据库”
•循环录入数据,直到输入空格表示录入完毕(循环结束条件)•输入姓名,如果姓名已存在,表明信息已录入,输出生日信息;如果姓名不在字典里,那就连同生日一起添加进字典
字典实例:统计单词个数
•把字符串里的单词分离出来放进列表
•遍历列表,用字典变量来记录单词的个数
•用字典的方法函数setdefa州)为没有被记录过的单词创建一个计数器,初值为0。

如果单词已被记录,则单词的计数器增加】
字典实例:野餐策划
-allGuests二{任盈盈:?苹果:5,橘子力2};黄蓉:{烤饼23,肉串:20},阿朱':{烤饼':『手抓饼:8}}。

•用函数m。

曲。

四国统计指定食物个数,要统计苹果的个数,就遍历allGuests里的值values(记录每个人带的食物),找出苹果的个数进行累加。

集合(set)基础知识
•集合的产生
•集合的基本操作
•集合实例:野餐策划。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
21
访问集合元素
遍历集合元素的例子。 s = set('python') for e in s:
print e
22
操作、函数、方法
• 函数 – len
• 方法 – st.add(新元素):添加一个元素 – st.update([元素1,元素2,...元素n]):添加多个元素 – st.remove(元素):删除成员 – st.clear():清空整个集合
5
打印字典
可以直接使用print()函数打印字典,方法如下: print 字典名 打印字典的内容。 >>>d={'name':'小明', 'sex':'男','age':'18', 'score':'80'} >>>print d >>>{'score': '80', 'name': '小明', 'age': '18', 'sex': '男'}
• 差: -, difference
– s=s1-s2 – s=s1.differnce(s2)
25
03 本章新函数
26
本章新函数
• dict(seq)
27
• 操作 – 元素 in st:判断是否成员
23
子集和超集
操作符 ==
!= < <=
> >=
实例 A==B
A!=B A<B A<=B
A>B A>=B
具体描述 如果A等于B,则返回True;否则返回False
如果A不等于B,则返回True;否则返回False 如果A是B的真子集,则返回True;否则返回False 如果A是B的子集,则返回True;否则返回False
19
1.创建集合
创建可变集合的例子。 s = set('python') 创建可变集合的例子。 s = set('python') print type(s) print s
20
不可变集合
s = frozenset('python') 创建不可变集合的例子。 fs = frozenset('python') print type(fs) print fs
16
示例
d={'name':{'first':'Johney','last':'Lee'},'age': 40} print(d['name'][ 'first'])
17
02 集合
18
集合
• 集合由一组无序排列的元素组成,可以分 为可变集合(set)和不可变集合 (frozenset)。可变集合创建后可以添加 元素,修改元素和删除元素。而不可变集 合创建后则不能改变。
print 'key:'+key+ ' value:'+ d[key]
for value in d.values(): # 遍历字典的值 print value
15
字典的嵌套
字典里面还可以嵌套字典,例如 {'name':{'first':'Johney','last':'Lee'},'age' :40} 可以通过下面的方式访问嵌套字典。Байду номын сангаас字典[键][键]
10
添加字典元素
d={'name':'小明', 'sex':'男','age':'18'} d['score'] = '80' print d 运行结果如下: {'sex': '男', 'age': '18', 'name': '小明', 'score': '80'} 列表、元组、字符串如何添加元素?
8
基本字典操作
• len(dct) • dct[key] • dct[key]=val • del dct[key] • key in dct • 注意:
– 键:作为索引标志 – 自动添加: – 成员资格:检查key而不是value
P58 例4-1
9
添加字典元素
可以通过赋值在字典中添加元素,具体方 法如下: 字典[键] = 值 如果字典中不存在指定键,则添加;否则 修改键值。
如果A是B的真超集,则返回True;否则返回False 如果A是B的超集,则返回True;否则返回False
24
集合运算
• 交: &,intersection
– s = s1 & s2 – s=s1.intersection(s2)
• 并: |,union
– s= s1 | s2 – s= s1.union(s2)
12
删除字典元素
使用pop()方法可以删除指定的字典元素,并返回删除的 元素值。具体方法如下: 字典名.pop(键) 使用pop()方法删除字典元素的例子。 d={'age': '18', 'name': '小明', 'score': '80', 'sex': '男'} d.pop('score') print(d) 运行结果如下: {'name': '小明', 'sex': '男', 'age': '18'}
6
访问字典元素
字典由字典元素组成。对字典的管理就是 对字典元素的访问和操作。可以通过下面 的方法获取字典元素的值:
字典名[key]
key是元素的键 注意字典与序列(列表、字符串的使用差 异)
7
示例
d={'name':'小明', 'sex':'男','age':'18', 'score':'80'} print d['name'] print d['sex'] print d['age'] print d['score'] 程序打印列表中索引为0和3的元素,运行结果如下: 小明 男 18 80
11
合并2个字典
可以使用update()函数将2个字典合并,具体方法如下 :
字典1.update(字典2) 合并2个字典 d1={'name':'小明', 'sex':'男'} d2={'age':'18', 'score': '80'} d1.update(d2) print(d1) 运行结果如下: {'age': '18', 'name': '小明', 'score': '80', 'sex': '男'}
Pytho n
第四章 字典和集合
1
字典
集合
目录
小结
Contents
2
01 字典
3
‘姓名’ ‘小明’ ‘性别’ ‘男’ ‘年龄’ ‘18’
4
定义字典
字典元素使用{}括起来,例如,下面的语句可以定义一 个空字典。
d1 = {}; 也可以在定义字典时指定里面的元素,每个元素由键和
值组成,键和值之间由冒号(:)分割,元素间由逗号 (,)分割。例如: d2={'name':'小明', 'sex':'男','age':'18', 'score':'80'}
13
遍历字典元素
可以使用for.. in语句遍历字典的键和值, 方法如下:
for key in 字典.keys(): # 遍历字典的键 访问 字典[key]
for val in 字典.values(): # 遍历字典的值 访问 字典[key]
14
d={'age': '18', 'name': '小明', 'score': '80', 'sex': '男'} for key in d.keys(): # 遍历字典的键
相关文档
最新文档