一、起步
安装python的相关内容
二、变量和简单数据类型
1变量
变量的命名:
- 只能字母、数字和下划线
- 不能包含空格
- 不要将Python关键字和函数名用作变量名
- 慎用小写字母l和大写字母O
2字符串
2.1修改大小写
- 方法title()将每个单词的首字母都改为大写
- 方法upper()将每个字母都转为大写
- 方法lower()将每个字母都转为小写
例如a='abc defg'
- print(a.title())输出Abc Defg
- print(a.upper())输出ABC DEFG
- print(a.lower())输出abc defg
2.2合并(拼接)字符串:使用+来拼接字符串
2.3使用制表符(\t)或换行符(\n)来添加空白
2.4删除空白
- 使用rstrip()删除字符串末尾的空白
- 使用lstrip()删除字符串开头多余的空白
- 使用strip()删除字符串两端的空白
其他:
- 使用函数str()避免类型错误
- 编写注释:用#标识
三、列表
在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。
1访问列表元素
- 列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。
- 索引从0 而不是1 开始。
- 将索引指定为-1,可让Python返回最后一个列表元素。
- 索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,以此类推。
2 append()和insert()
- 方法append()将元素添加到列表末尾;
- 使用方法insert()可在列表的任何位置添加新元素。
- 为此,你需要指定新元素的索引和值。
- 例如a.insert(0,'abc'),在列表的索引0的位置插入该元素。
3删除元素
- 使用del语句删除元素,如del a[0],删除第0个元素;
- 使用方法pop()删除元素,列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素;
- 使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可,如a.pop(2);
- 根据值删除元素,使用方法remove()删除指定值的元素,如a.remove('abc')
4排序
- 使用方法sort()对列表进行永久性排序,按照字母顺序排序,例如a.sort();
- 如果按与字母顺序相反的顺序排列,则使用a.sort(reverse=True) 使用函数sorted()对列表进行临时排序,同时不影响它们在列表中的原始排列顺序,如sorted(a);
- 同样,如果要与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True,如sorted(a,reverse=True)
- 反转列表元素的排列顺序,使用方法reverse(),如a.reverse()
其他:len()方法快速确定列表的长度,如len(a)
四、操作列表
1 遍历整个列表
使用for循环,例如 a=['ac','ab','dc'] for i in a: print(i)
2 range()函数
- 要得到数字1~5,需要使用range(1,6),如list(range(1,6));
- 使用range()函数,还可以指定步长,如list(range(2,11,2))
3 一些数学运算
- a=3,print(a**2),输出a的2次方。
- a=[1,2,3,4,5,6],max(a)求列表a中最大值,min(a)求列表a中最小值,sum(a)求列表中所有值的总和
- a= [i**2 for i in range(1,11)],print(a),结果为[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4切片
切片:使用列表的部分元素。
- 包含起始索引,不包含终止索引,如a=[1,2,3,4,5,6,7,8,9,10],a[1:3]即为[2,3];
- 如果没有起始索引,则从索引0开始,a[:4]即为[1,2,3,4];
- 如果没有终止索引,则到最后一个元素结束,a[4:]即为[5,6,7,8,9,10];
- 如果想要得到最后三个元素,可以使用a[-3:]即为[8,9,10]。
5复制列表
复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。
- 这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
- 如a=[1,2,3,4],b=a[:],此处为浅拷贝。
- 如果将列表a赋列表b,而不是将列表a的副本存储到列表b,这种语法实际上是让Python将新变量b关联到包含在a中的列表,因此这两个变量都指向同一个列表,此处为赋值,不是拷贝。
python中深拷贝与浅拷贝 此处推荐(225条消息) Python 深拷贝和浅拷贝详解xzw96的博客-CSDN博客python 深拷贝
python中深拷贝、浅拷贝、赋值引用 (225条消息) python:深拷贝,浅拷贝,赋值引用bufengzj的博客-CSDN博客深浅拷贝python
6元组
元组:使用圆括号来标识,使用索引来访问元素。
- 列表可以修改其元素,而元组不可以。
- 不可变的列表被称为元组。如a=(10,20),取元组中的元素a[0]、a[1]。
- for循环遍历元组 修改元组变量:虽然不能修改元组的元素,但可以给存储元组的变量赋值。如a=(10,20),后面直接给元组a赋值,a=(30,40)。
五、 if语句
- 在Python中检查是否相等时区分大小写;
- and,or,in,not in,True,False等的使用
- if语句,if-else 语句,if-elif-else 结构(可以使用多个elif,else语句可以省略)
- 确定列表是否为空,如a=[1,2],直接if a:
六、字典
在Python中,字典是一系列键值对,与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
键—值对是两个相关联的值。
- 指定键时,Python将返回与之相关联的值。
- 键和值之间用冒号分隔,而键—值对之间用逗号分隔。如a={'color':'red','score':5}。
键值对
- 添加键值对:依次指定字典名、用方括号括起的键和相关联的值。如a['name']='jack'。
- 修改字典中的值:可依次指定字典名、用方括号括起的键以及与该键相关联的新值,如a['color']='blue'
- 删除键值对:使用del语句进行删除,如del a['color']。
- 遍历字典中所有的键值对:例如字典a={'color':'red','score':5},for key, value in a.items(): 当然key和value只是变量名,可以是任意名称,如k和v。
- 遍历字典中的所有键:例如for k in a.keys(): 按顺序遍历字典中的所有键:例如for name in sorted(a.keys()):
- 遍历字典中的所有值:例如for v in a.values(): 这种做法提取字典中所有的值,而没有考虑是否重复。为剔除重复项,可使用集合(set),集合类似于列表,但每个元素都必须是独一无二的。例如for v in set(a.values()):
嵌套:
- 列表中嵌套元组:如a1={'color':'red','score':5},a2={'color':'blue','score':10},a3={'color':'green','score':15},b=[a1,a2,a3],b.append({'color':'black','score':20})。
- 在字典中存储列表:如a1={'color':'red','score':[5,10,15]}。
- 在字典中存储字典:如a1={'aa':{‘a1’:1,‘a2’:2,‘a3’:3}},'bb':{‘b1’:1,‘b2’:2,‘b3’:3}}}
七、用户输入和while循环
1函数input()让程序暂停运行,等待用户输入一些文本。使用函数input()时,Python将用户输入解读为字符串。函数int()可以将数字的字符串表示转换为数值表示。求模运算符(%),取余。
2for循环用于针对集合中的每个元素的一个代码块,而while循环不断地运行,直到指定的条件不满足为止。
3我们使用函数remove()来删除列表中的特定值,这之所以可行,是因为要删除的值在列表中只出现了一次。如果要删除列表中所有包含特定值的元素,该怎么办呢?例如:while 'cat' in pets: pets.remove('cat')
八、函数
def 函数名(形参): 可以有多个形参
形参与实参
- 函数定义中的变量称为形参
- 函数调用中的变量称为实参
使用参数
- 调用函数时,可以不指出参数的名称,但是实参的位置一定要写对;
- 指出参数的名称时,实参的位置不做要求。
- 编写函数时,可给每个形参指定默认值,在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。
return返回值,也可以返回字典等。
结合使用函数和while 循环
将函数存储在模块中,再导入整个模块。
- from a import b as c,从a.py中引入函数b,并给函数b一个别名c。
- import a as c,给模块a一个别名c,c直接调用函数,c.b()。
- from a import *,引入模块a中所有的函数。
给形参指定默认值时,等号两边不要有空格,对于函数调用中的关键字实参,也应遵循这种约定。
九、类
1方法__ init__(),当你根据类创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线。该方法的定义中,形参self必不可少,还必须位于其他形参的前面。
2根据类创建实例,a=Cat(),访问实例的属性,调用类中定义的方法。
3继承:定义子类时,必须在括号内指定父类的名称
十、文件和异常
(1)从文件中读取数据
1读取整个文件:
with open('a.txt') as f:
contents = f.read()
print(contents)
你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。
要删除末尾的空行,可在print语句中使用rstrip(),print(contents.rstrip())
2文件路径
包含相对路径和绝对路径。在Windows系统中,在文件路径中使用反斜杠(\)而不是斜杠(/)。另外,由于反斜杠在Python中被视为转义标记,为在Windows中确保万无一失,应以原始字符串的方式指定路径,即在开头的单引号前加上r。
3逐行读取
with open('a.txt') as f:
for line in f:
print(line)
出现多余的空白行,改为print(line.rstrip())。
4创建一个包含文件各行内容的列表
with open('a.txt') as f:
lines= f.readlines()
for line in lines:
print(line.rstrip())
5使用文件的内容
readlines()从文件中读取每一行,并将其存储在一个列表中。为删除每行左边的这些空格,可使用strip()而不是rstrip()。
6包含一百万位的大型文件
对于你可处理的数据量,Python没有任何限制;只要系统的内存足够多,你想处理多少数据都可以。
(2)写入文件
1写入空文件
with open('a.txt','w') as f:
f.write("I love programming.")
打开文件时,可指定读取模式('r')、写入模式('w')、附加模式('a')或让你能够读取和写入文件的模式('r+')。如果你省略了模式实参,Python将以默认的只读模式打开文件。
如果你要写入的文件不存在,函数open()将自动创建它。然而,以写入('w')模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。
2写入多行
要让每个字符串都单独占一行,需要在write()语句中包含换行符。
3附加到文件
如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式('a')打开文件。
(3)异常
每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
异常是使用try-except代码块处理的。try-except代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。
使用了try-except代码块时,即便出现异常,程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的traceback。
1处理ZeroDivisionError 异常
如print(5/0)会出现异常。
2使用try-except 代码块
try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero!")
3使用异常避免崩溃
4else 代码块
5处理FileNotFoundError 异常
Python无法读取不存在的文件,因此它引发一个异常。
6分析文本
方法split()以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中。
7使用多个文件
8失败时一声不吭:使用pass语句
(4)存储数据
一种简单的方式是使用模块json来存储数据。
模块json让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。
还可以使用json在Python程序之间分享数据。
更重要的是,JSON数据格式并非Python专用的,这让你能够将以JSON格式存储的数据与使用其他编程语言的人分享。
使用json.dump()和json.load()
json.dump()来存储一组数字,json.load()将这些数字读取到内存中。
函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象。
先导入模块json,import json,numbers.json中数据的存储格式与Python中一样。
import json
num = [2, 3, 5, 7, 11, 13]
file = 'numbers.json'
with open(file, 'w') as f:
json.dump(num, f)
使用函数json.load()加载存储在numbers.json中的信息,并将其存储到变量numbers中。
import json
file = 'numbers.json'
with open(file) as f:
num = json.load(f)
print(num)
十一、测试代码
单元测试和测试用例
Python标准库中的模块unittest提供了代码测试工具。单元测试用于核实函数的某个方面没有问题;测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。