python测试总结
测试题的基础知识点总结
1.循环求和
for
循环步长(range(2,101,2)
)
while
循环+条件判断(i%2==0
)
生成器表达式(sum(i for i in range )
)
所以:sum(range(1,101,2))
(奇数和)和sum+=1
(应加i
)
2.字符串切片
拼接:"Py"+"thon"[1:3]
为"Py"+"th"="Python"
切片规则:[start:end]
前闭后开
3.列表排序
A.sort(reverse=True)
:降序排列输出[8,5,2,1]
4.变量作用域
局部变量在函数结束后销毁
5.递归函数
递归计算:recursive(5)=5*recursive(4)//2
最终输出5
过程:5*(4*(3*(2*(1*1//2)//2)//2)//2
6.列表创建
正确:列表推导式[x for x in range(1,6)]
字符串转列表:list('12345')
→['1','2','3','4','5']
(需再转int
)
所以list range
(应为list(range(1,6))
)
7.异常类型
索引越界:[1,2,3][3]
除零错误:1/0
参数错误:len('abc',11)
(len
只接受1参数)
类型错误:len(None)
(None
无长度)
8.列表推导式嵌套循环
[x*y for x in list 1 for y in list[2]
→笛卡尔积
9.斐波那契递归
func(4)=func(3)+func(2)=(func(2)+func(1))+(func(1)+func(0))=(1+1)+(1+0)=3
终止条件是n<=1
时返回n
10.全局变量
global x
是声明全局变量
bar()
中调用foo()
修改全局x
最后输出15
11.条件判断
ifx:
中x
可为任意对象(空值False
,非空True
)
12.对象引用
a=[1,2]
和b=[1,2]
是两个独立对象
13.列表方法
remove(item)
按值删除元素
按索引删除用pop(index)
或dellist[index]
14.列表切片
15.分支结构
特点:多个elif
、else
在最后、仅执行一个分支,前两项和最后一项
16.类型转换
17.递归终止条件
缺少终止条件会无限递归:deff(n): return n*f(n1)
(无n==0
判断)
直接调用自身:deff(n): return f(n)
18.循环控制
break
:跳出循环
continue
:跳过本次迭代
return
:跳出函数(间接跳出循环)
19.切片规则
list[1:3]
返回索引1到2的元素→错误(索引3不包含)
20.变量作用域
函数内部变量默认局部→错误(需global
声明全局变量)
21.列表元素类型
列表可混合类型→正确(如[1,"a",True]
)
22.is
和==
is
比较内存地址,==
比较值
23.字符串不可变
字符串创建后不可修改(修改需创建新字符串)
24.动态类型
Python变量无需声明类型
25.列表元素访问
索引list[index]
、list.pop(index)
26.列表操作
合法:+
(拼接)、*
(重复)、索引访问
非法:``(列表不支持减法)
27.基本数据类型
正确:float
、str
错误:array
(非基础类型)、“数据类型”(无效)
28.变量本质
变量是对象的引用
不可变对象(如元组)无法修改
29.递归生成列表
func(3)=func(2)+[3]=(func(1)+[2])+[3]=([1]+[2])+[3]=[1,2,3]
30.递归特性
必须有终止条件;可能导致栈溢出;可转化为循环
31.作用域规则
全局变量函数内可直接访问;global
修改全局变量;局部变量函数外不可访问
32.列表原地修改
原地修改方法:append()
,extend()
,insert()
非原地:lst=lst+[1]
(创建新列表)
33.局部变量优先级
func()
中x
是局部变量
输出[3,4,5]
(局部)和[1,2]
(全局)
34.局部变量声明顺序
func()
中print(x)
在x=20
前
所以出现UnboundLocalError
(未定义)
35.多重赋值
c,d,a,b=d,b,a,c
等价于c=4,d=2,a=1,b=3
36.嵌套列表扁平化
遍历子列表并合并 flatten([[1,2],[3,4]])→[1,2,3,4]
37.函数参数传递
列表传参时,lst=lst+[4]
创建新对象 original
不变,modified
为[1,2,3,4]
38.列表副本
double()
返回新列表 nums
不变,result
为[2,4,6]
46.多返回值
函数返回元组(a+b,a*b)
sum=7,product=12
47.函数特性
函数可以无参数
48.阶乘递归
factorial(3)=3*factorial(2)=3*2*factorial(1)=3*2*1*1=6
49.列表可变性
函数内修改列表影响原对象 my_list
变为[1,2,3,4]
50.嵌套列表生成
二维列表:[[i+j for j in range(2)] for i in range(3)] 输出 [[0,1],[1,2],[2,3]]
51.循环中修改列表
pop(i)
后列表长度变化所以i
只在非删除时递增,输出[1,3,5]
52.列表交集去重
求交集并去重:intersect(a,b)=[2,3,4]
所以sum=9
53.字符串反转
split()
切分单词,insert(0,word)
倒序插入,输出"learn to fun is Python"
54.字典计数
统计元音频率,e出现4次(Hello和test),o出现3次,总和7
55.字符串处理逻辑
i%2==0
,输出"hello world this is a test"
56.栈操作模拟
peek
输出栈顶,依次输出2,2,4所以栈最终为[1,2,4]
→sum=7
57.嵌套列表计数
递归统计嵌套列表中2
的出现次数→结果为4
58.字典合并
合并字典并累加相同键,merged={'a':1,'b':5,'c':4}
→1+5+4=10
59.等差数列判断
检查相邻元素差是否为1 [5,6,7,8]
60.累加和列表
cumulative_sum([3,1,4,1,5])→[3,4,8,9,14]
61.字符计数
统计字母频率→'a'
出现5次(abracadabra
),'z'
未出现→结果5
62.模块知识
math
模块无round()
方法(Python内置函数)→错误说法
63.迭代器协议
可迭代对象,如列表,需用iter()
转迭代器才支持next()
64.字典浅拷贝
b=a.copy()
创建副本,所以修改b不影响a,a[1]仍为'a'
65.集合操作异常
s.remove(2)
返回None
,s.discard(None)
无效,所以s={1,3}
这次考试彻底暴露了我在变量作用域上的认知漏洞,明明背熟了global关键字,实战时还是分不清函数里修改的到底该是全局变量还是局部;数据结构操作更是重灾区,列表切片总手滑多切一位,字典合并时傻傻分不清赋值和浅拷贝的区别,集合运算差点把&
和|
搞反。流程控制虽然基础,但for
循环里删列表元素直接导致索引崩盘,if-elif-else分支不能漏写。最头疼的是递归函数,终止条件如果少一行就无限循环,还差点忘了递归层数太深会爆栈。我现在终于懂了:写代码不是拼手速,而是得时刻警惕边界异常,索引len-1,改容器前先问自己会不会影响循环。所以下次刷题前,我决定先画三张图:作用域、对象引用、递归调用树。