第二章
1.python和c/c++在if语句使用上是有区别的
(1)python:
if 条件:
输出
#注意,这里一定要有Tab空格,因为python语法就是按这样来理逻辑的
else 条件:
输出
(2) c/c++:
if (条件)
{
输出语句;
}
else
{
}
python没有switch用法
2.python shell中 F键可以用来找关键词
第三章
1.
(1) 修改大小写–方法:title(), upper(), lower()
(2) 删除空白–方法:strip(), lstrip(), rstrip()
(3) 字符转换:str()函数
(4) 索引0开始,-1为倒数
(5)列表
添加元素:append()方法 --队末,insert()方法–任意位置
删除元素:del 语句指定位置,pop()方法–队末,指定位置, remove()方法–指定元素
排序:sort()方法 --按字母永久性排序,可倒序 ,sorted()函数–按字母临时排序,可倒叙
注:不能直接print(a.sort()),这样会是空列表
反转元素:reverse()–永久修改顺序,复原可再用一次
列表长度:len()
第四章
1.遍历列表
(1)函数range(): range(a,b,step) 范围[a,b)
(2)函数list(): 直接转换成列表
(3)乘方运算符号: **
(4)处理数字的函数: min(), max(), sum()
(5)列表解析(代码简写):列表变量名 = [表达式 for 变量名 in range() ]
(6)求余 %
2.切片
(1)切片:截取列表 列表变量名[a,b]----范围[a,b)
(2) 复制列表: 新列表名 = 原列表名[ : ]
3.元组–不可变列表,圆括号
(1)修改元组变量:重新定义元组
第五章
- 与:关键字 and ,或:关键字 or, 包含关系 : in,不包含 : not in
- if结构: 两个条件:if-else ,多个条件: if-elif-else,省略else(只执行符合条件的):if-elif
注:如果只想执行一个代码块,用if-elif-else结构;运行多个代码块,用一系列的if
第六章
1.字典
(1) 删除键-值对: del 字典名[‘键’]
(2) 书写格式:
字典名 = {
键:值,
键:值,
}
(3) 返回键-值对:方法 items()–key,value = 字典名. items()
(4)返回键: 方法 keys() , 返回值: 方法 values()
(5)找出列表中独一无二的元素(重复的只取一个): set() 函数
2.嵌套
(1)列表中储存字典:一个列表元素由多个键值对组成
(2)字典中储存列表:一个键关联多个值
(3)for 变量名 in range(num) :重复循环num此·2
(4)字典中储存字典:
注:嵌套其实没那么复杂,处理的时候,只需分清是列表还是字典,然后按相应的规则处理就行
第7章 函数
1.
(1)输入函数:input()
2.while 循环
(1)语法:
while 条件:
do
(2) break退出循环
(3) continue退出本次循环
第8章 函数
1.语法
def 函数名():
函数体
2.调用
函数名()
3.实参传递
(1)位置参数:按顺序
(2)关键字参数: 在实参中将名称和值关联起来
(3)默认值:给形参自定义好默认值
可以混合使用位置参数,关键字参数,默认值参数
4.返回值:return–可以返回任何类型的值,包括字典和列表等!–如果需要打印值,还需使用print() 函数
5.让实参变为可选的:加上判断语句if 判别形参的值是否为空,可选形参写为:形参名 = ‘’
6.可以向函数传递列表(实参为列表)
(1)如果不想改变原列表内容,可在复制原列表,对复制列表进行操作:
function_name( list_name[ : ] )
7.函数注释说明:
def function_name(形参):
“""
函数说明
“”"
函数体
注:函数说明部分可用方法_doc_查看
8.传递任意数量的实参:def function_name(*形参名)–*形参名中的星号让Python创建一个空元组,并将收到的所有值都封装到元组中
9. 混合传递位置实参和任意数量实参: 例 def make_pizza(size,*topping):
10.使用任意数量的关键字实参:例 def aa(first,last,**user_info):
形参 **user_info的两个星号创建一个名为user_name的空字典,并将收到的所有名称-值对都封装到这个字典中。
11.将函数储存在模块中:
(1)把包含函数的python模块放在同一目录下–新python文件中 ”import 模块名(py文件名)“–使用函数:模块名.函数名(实参)
(2)直接从模块导入函数: from 模块名 import 函数名
(3)给函数指定别名: from 模块名 import 函数名 as 别名
(4)给模块指定别名: import 模块名 as 别名
(5)导入模块中所有函数: from 模块名 import * --可以通过名称来调用每个函数,不需要使用句点表示法
第8章 类
1.特殊方法 __init__():根据类创建实例时,会自动运行!
注意:init前后是两条下划线!
2.对类中的任何方法,形参self都必不可少!因为示例要传递给形参self . (类中的方法和函数是一个意思!)
3.属性(都放在__init__方法中):可通过实例访问的变量, 类:首字母大写的名称, 实例:首字母小写的名称
4.语法:
class class_name():
class_body
5.创建实例时,类中输入的参数是_init_()中的参数
6.使用类和实例:
(1)可以给属性指定默认值
(2)修改属性的值:
one.直接通过实例访问修改
two.通过方法修改属性的值,其实就是新定义个方法专门用来更新属性的值,也可以让其自动更新,具体看怎么编写这个方法
7.继承
(1)一个类继承另一个类时,自动获得另一个类的所有属性和方法。原有类称为‘父类’,现有类称为‘子类’
语法:
class 子类名(父类名):
class_body
(2)创建子类时,父类必须包含在当前文件中,且位于子类前面
(3)定义子类时,必须在括号内指定父类的名称,方法__init__()
接受
实例所需的信息;super()函数将子类和父类关联起来,让实例包含父类所有属性(
初始化
父类属性)
例: def
init
(self,父类所以属性名称)
super().
init
(父类所有属性名称)
(4)如果在子类中的方法与父类中的方法重名,只要是根据子类创建实例,那么只会调用子类中的方法–通常是在子类和父类方法有区别时才改写
8.将类导入模块
(1)在最开头需要编写文档字符串
例: “"" 一个可用于表示汽车的类 “”"
(2)导入类:
from 模块名 import 类名
导入全部类(不推荐): from 模块名 import *
(3)一个模块可以储存多个类,也可以在一个模块中导入另一个模块(比如需要用到另一个模块的类,直接import就好)
总结:储存,调用类和模块是很灵活的!
9.类编码风格
(1)
类名采用驼峰命名法:类名中的每个单词的首字母大写,不使用下划线
实例名和模块名:小写格式,在单词间加上下划线
(2)
模块中:用两个空行分隔类
类中:一个空行分隔方法
(3)
导入模块:先编写导入标准库模块,再加个空行,然后导入自己编写的模块
第10章 文件异常
1.关键字
with
:打开文件,在不需要访问文件后将其关闭。也可使用close()函数,但不推荐,因为在有bug时,导致close()未执行,文件不会关闭。
2.方法read()为
读取文件
,到达文件末尾时会返回一个空字符串,这个空字符串显示出来是一个空行。可以使用方法rstrip()删除
3.打开文件的语法:
with open(filename) as file_object:
主题
4.使用with关键字时,open()返回的文件对象只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块内将文件的隔行储存在一个列表,在with代码块外使用该列表
例:
with open(filename) as file_object:
lines = file_object.readlines() #隔行储存在一个列表
##with代码块外使用该列表
for line in lines:
print(line.rstrip())
5.读取文本时,所有文本解读为字符串,如果要使用数字,需要用int(),float()转换
6.方法replace()将字符串中特定单词都替换为另一个单词,将a换成b用法:变量名.replace(‘a’,‘b’)
7.**写入文件:**方法write() , 语法(例):
with open(filename,‘w’) as file_object:
file_object.write(‘内容’)
注:‘w’写入模式,‘r’读取模式,‘a’附加模式,读取和写入模式‘r+’。默认只读模式’r’
8.write模式不会在写入的文本末尾添加换行符,要自己加入换行符 ‘\n’
9.给文本添加内容,而不是覆盖原有内容,可以用附加模式‘a’
10.
异常(看经验,提前分析哪些地方会报错)
:每当python发生错误时,它都会创建一个异常的特殊对象。如果编写了处理该异常的代码,程序将继续运行,如果未对异常处理,程序将停止,并显示traceback
(1) 异常使用**try-except(-else)**代码块处理–简单说,加入的异常处理就是将编译器的报错换成易懂的报错
例:
try:
通常是程序主体
except 编译器错误类型:
print(易懂的报错语言)
else:
无错误时的代码行
11.
分析文本
:
(1) 方法split(): 根据一个字符串创建一个单词列表,例:
title = ‘Alice in Wonderland’
title.split()
结果:[‘Alice’,‘in’,‘Wonderland’]
(2)失败时通过,不做其他:在
except
代码块中使用
pass
语句
(3)方法count():计算特定单词或短语在字符串中出现了多少次,例:
line = ‘row,Row,row your boat’
line.lower().count(‘row’)
结果: 3
12.
存储数据:模块json–将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。还可以在python程序间分享数据
(1) 函数json.dump():接受两个实参–要储存的数据以及可用于存储数据的文件对象
函数 json.load(): 将列表读取到内存,接受一个参数–存储数据的文件对象
13.重构:优化代码,将代码划分为一系列完成具体工作的函数
第12章 测试代码:编写函数或者类时,为其编写测试–
模块unittest
1.测试函数
(1) 模块unittest的断言方法assertEqual(): 核实得到的结果是否与期望的结果一致
(2) 继承unittest.TestCase类,子类名包含字样Test–和一般的类继承在语法上有点区别,
(3) test_开头的方法自动运行
2.测试类:
(1) unittest.TestCase类中常用的断言方法–其实就是一个条件测试
assertEqual(a,b) | a=b |
---|---|
assertNotEqual(a,b) | a != b |
assertTrue(x) | x为True |
– | – |
assertFalse(x) | x为False |
assertIn(item,list) | item在list中 |
– | – |
assertNotIn(item,list) | item不在list中 |
(2)方法setUp():使用此方法就可以在每个测试方法中创建多个实例–相当于多次测试验证
注如果测试类中包含了方法setUp(),python将先运行它,在运行以test开头的方法