一、列表
1.创建一个文件birthday.py,假设你要祝某人生日快乐!首先将年龄存储在变量age中,将姓名存储在变量name中,让程序输出类似“阿明,23岁生日快乐!”
例如:假设你要祝某人生日快乐,可能会编写类似于下面的代码
然而,会输出什么呢?
这是一个类型错误,Python发现你使用了一个值为整数(int)的变量,但是它不知道这个变量表示的是数值23,还是字符2和3。所以像这样在字符串中使用整数时,需要显示的指出你希望python将这个整数用作字符串。使用函数str():
2.1 列表简介[5分钟]
列表由一系列按特定顺序排列的元素组成。
在python中,用方括号来表示列表,用逗号来分隔其中的元素。使用索引来访问列表中的元素。【演示】
2.2修改添加和删除[30分钟]
修改:直接修改
添加:a. 在列表末尾添加元素:films.append(‘寻梦环游记’)
b. 在列表中插入元素:films.insert(0,’功夫熊猫’)
删除:a. 根据要删除的元素在列表中的索引:del films[0]或a=films.pop(0)
b. 根据值删除元素:films.remove(‘海底总动员’)
² 注意:remove方法,如果列表中有相同的值,只删除第一个。
列表排序:films.sort()
列表反转:films.reverse()
列表长度:len(films)
【小练习】:想出5个你渴望去旅游的地方,将它们存储在一个列表中,练习刚才讲过的一些列表方法。
2.3 使用for循环遍历列表[10分钟]
我们要显示列表中所有元素的值,逐个使用print语句,增加一个列表项,增加一个print语句【演示】,但是如果列表项再增加100个?需要迭代。
in,冒号,缩进
一些错误:忘记缩进,不必要的缩进,遗漏冒号【演示】
2.4数值列表range[10分钟]
Python函数range()让你能够轻松的生成一系列的数字,经常和for一起使用。例如:,运行,只打印1~4,
还可以使用range()函数直接生成数值列表,例如:
,还可以指定步长,例如:,这是打印十以内的奇数。
【试一试】如果打印十以内的偶数怎么写?
numbers = list(range(0,11,2))
print(numbers)
2.5列表解析[10分钟]
列表解析(列表生成式)可以用来快速生成符合某种规则的列表,例如:,要使用这种语法:
首先,指定一个描述性的列表名,如squares;
然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值;
接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。
【试一试】使用列表解析,生成一个包含前10个整数的立方的列表
cubic = [value**3 for value in range(1,11)]
print(cubic)
2.6 切片[10分钟]
切片,可以获取列表中的任意部分元素,例如,有一个运动队成员的列表:
【试一试】创建一个从0~99的列表,并使用切片分别获取:前10个数,后10个数,20~30之间的数,前20个数每隔3个取一个,所有数每隔5个取一个。
a[:10]
a[-10:]
a[20:30]
a[:20:3]
a[:20:5]
二、字典、字符串等
1. 上次课内容回顾[10分钟]
课堂作业:1.已知a = [1,2,3,4,5,333,11,44],输出下面的结果:[4,5,333]
2. 有下面2个列表:a = [1,99,33,44,55,22] ,b = [11,33,54]
输出结果:[1,2,99,33,44,55,22,(11,33,54)]
[1,2,99,33,101,44,55,22]
a.insert(1,2)
b = tuple(b)
a.append(b)
print(a)
a.pop(7)
a.insert(4,101)
print(a)
3.用列表推导式生成100内的大于20的偶数
a= [i for i in range(20,101,2)]
print(a)
2. 课程知识点讲解
2.1元组[5分钟]
元组与列表一样,也是一种序列,唯一的不同是元组不能修改,是不可变的。
在python中,用圆括号来表示元组。
创建一个普通元组:
创建空元组:
创建只包含一个值的元组: 【注意】必须加逗号
list函数和tuple函数
功能:以一个序列为参数,把其转换为列表(元组)
2.2字典和集合[20分钟]
字典:
字典是Python中唯一内建的映射类型,key-value,键可以是数字、字符串甚至是元组。
我们看一本书,可以选择从头到尾的顺序阅读,也可以快速的翻到某一页。所以,使用字典的目的,是为了可以通过轻松查找某个特定的词语(键),从而找到它的值。例如:
① 表示一个游戏棋盘的状态,每个键都是由坐标组成的元组,值就是0或1,代表有无棋子
② 存储文件的修改时间,文件名作为键,时间作为值
③ 电话簿,姓名作为键,电话号码作为值
字典的创建方法
1.直接创建:
2.通过dict函数,通过其他字典或键值对的序列创建
基本的字典操作
① len(d)返回字典中项的数量
② d[key]返回关联到键上的值
③ d[key]=value,将键对应的值改为value
④ deld[key]删除该项
⑤ keyin d,检查字典中是否含键为key的项
集合:
遍历字典:
2.3 字符串[20分钟]
所有标准的序列操作都可以应用于字符串(索引,分片,乘法,判断成员资格,求长度,取最大值和最小值)。但是字符串是不可变的。
2.4 while循环[5分钟]
For循环是根据次数循环,while循环是根据状态循环。我们怎么把次数变成状态?【提问】,使用一个计数标识。
但是,代码变复杂了,所以,在迭代处理列表的时候,我们优先使用for循环语句。For循环会负责从列表起始位置开始,一直处理到列表末尾,不会出现“大小差1”错误。
2.5 if语句[15分钟]
分支语句语法:
if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
else:
语句块3
【注意】下列值作为布尔表达式时,会被解释器看作False:
False,None,0,“”,(),[ ],{}
其他的一切都被解释为True
随着程序变的复杂,我们需要复用代码,并且使程序尽可能的结构清晰。定义成函数。
三、函数
1. 小练习[20分钟]
编写一个函数请统计某个字符串中每个字母的出现次数(忽略大小写,a与A是同一个字母),并输出成一个字典。 例s=‘asdfWEfewaWAAa’ 输出为{'a': 5, 's': 1, 'd': 1, 'f': 2, 'w': 3, 'e': 2}
2. 课程知识点讲解
2.1 返回值[10分钟]
编写一个函数changeToKg(lb)来计算重量的单位转换。1磅=0.45359237千克。保留小数点后2位。【学生练习】
还可以返回多个值。
使用return语句,函数可以返回一个或多个值
例:
返回多个值,实际上是返回了一个元组,序列解包
2.2位置参数[15分钟]
Python的函数定义非常简单,但灵活性却非常大。这个灵活性体现在参数的多种形式上,除了普通参数之外,还有关键字参数、默认值参数、传递任意数量参数。
2.3 关键字参数[5分钟]
如果参数非常多的话,记位置很容易记错,可以使用关键字参数
【注意】一旦使用关键字参数,就所有的参数都同时指明关键字,否则会报错
2.4 默认值[5分钟]
编写函数时,可给每个参数指定默认值,在调用函数中可以省略相应得参数。例如,如果你发现调用describe_pet()时,描述的都是狗,就可将形参animal_type的默认值设置为“狗”,这样,调用该函数来描述狗时,就可以省略animal_type这个参数。
2.5可变参数[5分钟]
在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
我们以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……。
要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,这样,函数可以定义如下:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
2.6可变关键字参数[10分钟]
有时候,需要接受任意数量的参数,但预先不知道传递给函数的会是什么样的信息。比如,创建新用户时。
【注意】:参数组合使用时,参数定义的顺序必须是:必选参数、默认参数、可变参数、可变关键字参数。
四、模块
3. 小练习[10分钟]
和老师一起完成一个小程序:
说明:字符串是不可变的,列表是可变的,当将列表等可变数据作为函数的参数时,在函数中对其做的修改是永久性的。为了避免这种情况,通常需要创建一个列表的副本,去调用函数。
4. 课程知识点讲解
2.1 模块[20分钟]
随着你的程序变得越来越长,你可能想要将它分割成几个更易于维护的文件。或者,你也可能想在不同的程序中使用顺手的函数,而不是把代码在它们之间中拷来拷去。
为了满足这些需要,Python提供了一个方法可以从文件中获取定义,这样的文件被称为模块;模块中的定义可以导入到另一个模块中。
模块,在Python可理解为一个.py文件。文件名就是模块名,模块的模块名(做为一个字符串)可以由全局变量 __name__ 得到。
例如:你可以用自己惯用的文件编辑器在当前目录下创建一个叫 fibo.py 的文件,录入如下内容:
现在进入Python解释器并使用以下命令导入这个模块:
这样做不会直接把 fibo 中的函数导入当前的语义表;它只是引入了模块名 fibo 。你可以通过模块名按如下方式访问这个函数:
如果打算频繁使用一个函数,你可以将它赋予一个本地变量:
2.2 导入模块[15分钟]
模块可以导入其他的模块。 一个(好的)习惯是将所有的 import 语句放在模块的开始(或者是脚本)。import 语句的一个变体直接从被导入的模块中导入命名到本模块的语义表中。例如:
还可以使用as给函数或模块指定别名
from fibo import fib as f
import fibo as f
或者导入模块中的所有定义。需要注意的是在实践中往往不鼓励从一个模块或包中使用 * 导入所有,因为这样会让代码变得很难读。
2.3 作为脚本来执行模块[10分钟]
通常,我们会在模块中添加类似下面的代码:
就可以让此文件像作为模块导入时一样作为脚本执行。
如果模块被导入,不会执行这段代码:
这通常用来为模块提供一个便于测试的用户接口。
2.4 内建模块[10分钟]
查看python文档,build-in-function和内建模块
sys模块:
datetime模块:
2.5 模块的搜索路径[5分钟]
内建模块,我们是可以随时随地使用的,我们自己编写的模块如果使用,就需要和主程序放在同一个目录中。那么,解释器是根据什么去寻找模块的呢?
实际上,解释器由 sys.path 变量指定的路径目录搜索模块,该变量初始化时默认包含了输入脚本(或者当前目录), PYTHONPATH 和安装目录。
① 程序的根目录
② PYTHONPATH环境变量设置的目录
③ 标准库的目录
【注意】自己创建模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。
如果我们要添加自己的搜索目录,有两种方法:
一是直接修改sys.path,添加要搜索的目录:
第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。
2.6 包[10分钟]
使用模块可以避免函数名和变量名冲突。相同名字的函数和变量可以分别存在不同的模块中。但是,如果模块名冲突了,怎么办?
为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。
包是由一系列模块组成的集合。当不同作的模块进行按文件夹分类后再组成一个整体的库,可以称为包。为了让Python将目录当做内容包,目录中必须包含__init__.py文件,用于标识当前文件夹是一个包。最简单的情况下,只需要一个空的__init__.py文件即可。
执行 from package import *时,如果包中的__init__.py 代码定义了一个名为__all__ 的列表,就会按照列表中给出的模块名进行导入。
5. 安装第三方模块[10分钟]
安装第三方模块,可以通过包管理工具pip完成。第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称。
(1)在命令行下,运行:pip install libname
或者,可以下载安装包之后离线安装,安装包一般以whl为后缀名,方法是:pip install libpath
(2)源文件安装:如果下载下来的安装包为带有源文件的压缩包,解压之后,运行setup.py进行安装,方法是:命令行切换到安装包中setup.py文件所在的目录,执行 python setup.py install
(3)运行安装包:有些类库提供了双击运行直接安装的安装包,比如python连接mysql数据库的驱动 mysql-connector-python,这些安装包的后缀名为msi或者exe。下载下来之后,双击运行之后就安装好了,前提是要根据python的版本及windows的位数下载对应的安装包,否则安装过程会报错或者直接提示无法安装。
(4)使用Anaconda
【Matplotlib小例子】:np.linspace(0, 2 * np.pi, 50) 这段代码将会生成一个包含 50 个元素的数组,这 50 个元素均匀的分布在 [0, 2pi] 的区间上。
五、文件和异常处理
2.1 小练习[10分钟]
我们先看一段程序:
Print(‘Hello,’+name+‘,your phoneNumber is ’+phone+‘!’)
这段程序中使用了我们之前学过的输入输出方法,输入:通过键盘读入数据,输出:通过终端窗口打印结果。但是这段代码,使用了一种新的格式化输字符串方式,也是python官方推荐的格式化方法。格式化字符串的函数str.format(),此函数可以快速处理各种字符串。具体使用方法可以参考:https://www.cnblogs.com/gide/p/6955895.html
虽然本文并非原创,但是我想要达到的目的是让这些重要的复习点提供给大家让我们一起更好的学习Python这门语言。
————————————————
版权声明:本文为CSDN博主「zoe9698」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zoe9698/article/details/80777802