《Python编程--从入门到实践》--学习记录

第二章

1.python和c/c++在if语句使用上是有区别的
(1)
python中的if语句格式:
if 条件:
代码块 #注意,这里一定要有Tab空格,因为python语法就是按这样来理逻辑的
else 条件:
代码块

(2) c/c++中的if语句格式:
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)修改元组变量:重新定义元组

第五章

1.与:关键字 and ,或:关键字 or, 包含关系 : in,不包含 : not in

2.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.输入函数:input()

2.while 循环
(1)语法:
while 条件:
do
(2) break退出循环
(3) continue退出本次循环

第7章+ 自定义函数

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开头的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值