python基础篇收尾了,让我们给自己一个检测吧!(后文解析)
python基础试卷
一、选择题【15 * 1 = 15分】
1. Python中的“深拷贝”与“浅拷贝”不同在于:
A. 深拷贝比浅拷贝执行速度快
B. 深拷贝允许修改原始对象,而浅拷贝不允许
C. 深拷贝创建对象的副本及其嵌套对象的副本,而浅拷贝只复制对象的顶层
D. 浅拷贝使用更多内存
2. Python中的切片操作可以用来做什么?
A. 修改列表元素
B. 访问列表的子序列
C. 删除列表元素
D. 查找列表元素
3. 在Python中,哪个关键字用于跳出当前循环?
A. break
B. continue
C. pass
D. exit
4. 下列哪个是Python中的不可变数据类型?
A. 字符串
B. 元组
C. 字典
D. 集合
5. 在Python中,range(5)会生成一个什么序列?
A. [0, 1, 2, 3, 4]
B. [1, 2, 3, 4, 5]
C. [0, 1, 2, 3, 4, 5]
D. [5]
6. Python中的enumerate()函数用于什么?
A. 对列表进行排序
B. 获取列表的索引和值
C. 查找列表中的元素
D. 删除列表中的元素
7. Python中的列表推导式用于什么?
A. 遍历列表元素
B. 修改列表元素
C. 创建列表
D. 查找列表中的元素
8. 下列哪个是Python中的字典方法,用于获取字典中所有键的列表?
A. keys()
B. values()
C. items()
D. get()
9. Python中的set()函数用于创建什么数据类型?
A. 列表
B. 元组
C. 字典
D. 集合
10. 在Python中,如何获取一个列表中的最后一个元素?
A. list[-1]
B. list.last()
C. list.end()
D. list.final()
11. 在Python中,如何定义一个函数,使其接受任意数量的参数?
A. 使用*args
B. 使用**kwargs
C. 使用*parameters
D. 使用**vars
12. 在Python中,如何检查一个变量是否为None?
A. if var == None:
B. if var is None:
C. if var is not None:
D. if not var:
13. 哪种数据类型不属于Python的内置数据类型?
A. 列表
B. 字典
C. 自定义对象
D. 元组
14. 在Python中,如何创建一个只包含唯一元素的列表?
A. 使用list()函数
B. 使用set()函数
C. 使用unique()方法
D. 使用distinct()方法
15. 在Python中,如何复制一个列表?
A. new_list = old_list
B. new_list = old_list.copy()
C. new_list = list(old_list)
D. new_list = [x for x in old_list]
二、简答题【10*3 =30分】
1. python中的索引是如何定义的?
2. 列表推导式和字典推导式的作用是什么?列举一两个
3. 列表和元组的区别是什么?
4. break、continue、pass的作用分别是什么?
5. 深拷贝和浅拷贝的区别是什么?
6. 为什么使用* args,** kwargs?
7. 简述python中函数的参数传递类型?
8. 举例说明什么是闭包函数?
9. 简述局部变量和全局变量的区别?
10. 什么时候使用global关键字?什么时候用nonlocal关键字?
三、编程题【11*5=55分】
1. 编写一个Python函数,接受一个字符串作为参数,判断一个字符串是不是回文字符串,返回值是一个布尔类型。
2. 编写一个Python程序,解决以下问题:现在有三个数,分别为a,b,c,它们之间的和为19,取值范围1-9(包括9),但是a,b,c之间不相等,求出能组成多少个互不相同并且不重复的数字?。
3. 编写一个Python程序,使用列表推导式创建一个包含1到20之间所有平方数的列表。
4. 编写一个递归函数,求n的阶乘。
5. 编写一个python函数,计算并返回100到200之间所有的素数列表。
6. 编写一个python函数,可接收一个数字列表,并返回其中的最大值和最小值, 要求:不可以在自定义函数内调用python内置函数。
7. 编写一个python函数,可接收一个列表和要查找的值key,使用顺序查找法,输出key在列表中的下标,找不到的话,输出-1,要求:不可以在定义函数内调用python内置方法。
8. 编写一个递归函数,返回第n项斐波那契数列的值。
9. 使用列表推导式,生成包含10个范围在[10,30]之间随机数的列表。
10. 编写一个python函数,接收一个整型变量n为参数,输出n行的九九乘法表。
11. 编写一个python函数,接收一个整型变量n为参数,输出n行的杨辉三角形。
答案解析:
【1】选择题部分:
1、c 2、b 3、a 4、ab(多选) 5、a 6、b 7、c 8、a 9、d
10、a 11、ab(多选) 12、bd(多选) 13、c 14、b 15、bcd(多选)
选择题难点注意:
第4题,字符串和元组一样,也是不可变的数据类型哦!虽然字符串有lower()此类让字符串变小写的函数,但是那是生成了一段新的字符串,并不是改变原有的字符串而来。
第12题:None类型不能通过==判断一个变量是否是该类型,需要用 is
第15题:bcd分别都是创建了一个新的列表达到复制的目的,而a是直接将原列表赋值
【2】简答题部分:
1. python中的索引是如何定义的?
答:python中的索引就是有序序列的下标,且python中的下标有正向下标和反向下标,正向下标从0开始,反向下标从-1开始。
2. 列表推导式和字典推导式的作用是什么?列举一两个
答:简单高效的创建列表和字典。
ls = [x for x in range(10)]
list_of_tuples = [('a', 1), ('b', 2), ('c', 3)]
dictionary = {key: value for key, value in list_of_tuples}
3. 列表和元组的区别是什么?
语法不同:列表用[],元组用()
操作不同:列表可增加、删除、修改,元组不可以
4. break、continue、pass的作用分别是什么?
break:退出本层循环
continue:跳出本次循环、继续下一次循环
pass:占位符
5. 深拷贝和浅拷贝的区别是什么?
深拷贝:复制对象的值和对象嵌套的可变对象的值
浅拷贝:复制对象的值 引用对象嵌套的可变对象
6. 为什么使用* args,** kwargs?
用二者的目的是不定长传参
7. 简述python中函数的参数传递类型?
- 位置参数
- 关键字参数
- 默认参数
- 位置不定长参数
- 关键字不定长参数
8. 举例说明什么是闭包函数?
- 函数嵌套
- 内函数使用外函数局部变量
- 外函数将内函数名返回
def out_fun(base):
def in_fun(exp):
return exp**base
return in_fun
9. 简述局部变量和全局变量的区别?
- 作用域不同:局部变量只能在函数内起作用,全局变量在整个程序起作用
- 生命周期不同:局部变量函数调用时分配内存调用结束释放内存,全局变量定义时分配内存程序结束才释放内存
10. 什么时候使用global关键字?什么时候用nonlocal关键字?
- 在函数内想将局部变量声明为全局变量,使用global
- 在内层函数内使用外层函数局部变量,使用nonlocal
【3】代码题部分:
1、编写一个Python函数,接受一个字符串作为参数,判断一个字符串是不是回文字符串,返回值是一个布尔类型
分析:这题用切片最简洁,正序==倒序
def fun1(s):
if s[::] == s[::-1]:
return True
else:
return False
2. 编写一个Python程序,解决以下问题:现在有三个数,分别为a,b,c,它们之间的和为19,取值范围1-9(包括9),但是a,b,c之间不相等,求出能组成多少个互不相同并且不重复的数字?。
分析:这题为多层嵌套,最后的数字不相同我们可以用多个 != 组合或者用集合,这里我用集合
这里双层嵌套配合条件判断规模更小
cot=0
for a in range(1, 10):
for b in range(1, 10):
c=19-a-b
if 1<=c<=9:
s={a,b,c}
if len(s) == 3:
print(f'{a}{b}{c}',end=' ')
cot+=1
if cot%5==0:
print()
3. 编写一个Python程序,使用列表推导式创建一个包含1到20之间所有平方数的列表。
分析:一步得出
ls=[x*x for x in range(1,21)]
4. 编写一个递归函数,求n的阶乘。
分析:递归注意不要死循环
def rec(n:int):
if n==1:
return 1
else:
return n*rec(n-1)
5. 编写一个python函数,计算并返回100到200之间所有的素数列表。
分析:列表的元素增加用append,素数判断range为了简化规模可以到int(i**0.5)+1
def fun():
ret=[]
for i in range(100,201):
for j in range(2,int(i**0.5)+1):
if i%j==0:
break
else:
ret.append(i)
return ret
6. 编写一个python函数,可接收一个数字列表,并返回其中的最大值和最小值, 要求:不可以在自定义函数内调用python内置函数。
分析:打擂台法
def fun(ls:list):
max1=ls[0]
min1=ls[0]
for i in ls:
if i > max1:
max1=i
if i < min1:
min1=i
return max1,min1
7. 编写一个python函数,可接收一个列表和要查找的值key,使用顺序查找法,输出key在列表中的下标,找不到的话,输出-1,要求:不可以在定义函数内调用python内置方法。
分析:索引查找与值的对应
def fun(ls:list,key):
for i in range(len(ls)):
if key == ls[i]:
return i
else:
return -1
8. 编写一个递归函数,返回第n项斐波那契数列的值。
分析:要知道斐波那契数列前两项和后几项的规律
def fei(n:int):
if n == 1 or n == 2:
return 1
else:
return fei(n-1)+fei(n-2)
9. 使用列表推导式,生成包含10个范围在[10,30]之间随机数的列表。
分析:这题用随机数函数random(导入random库),顺便使用列表推导式
import random
ls=[random.randint(10,30) for i in range(10)]
print(ls)
10. 编写一个python函数,接收一个整型变量n为参数,输出n行的九九乘法表。
分析:嵌套,对齐可以用制表符\t或者在{i*j:<2d}
def fun(n:int):
for i in range(1,n+1):
for j in range(1,i+1):
print(f'{j}*{i}={i*j}',end='\t')
print()
11. 编写一个python函数,接收一个整型变量n为参数,输出n行的杨辉三角形。
分析:列表的嵌套,首先列表推导式生成n个【1】构成的嵌套列表,后面的两层循环嵌套分别是准备遍历每一行和每一列,if——else语句为了给 ls[i][j]赋值,赋值原理是上一行的对应列和前一列之和,最后大循环外开始打印三角:for遍历行,打印列表内层即ls[i]
def fun(n:int):
ls=[[1]*i for i in range(1,n+1)]
for i in range(n):
for j in range(i+1):
if j==0 or j==i:
pass
else:
ls[i][j]=ls[i-1][j]+ls[i-1][j-1]
for i in range(n):
print(ls[i])
标签:函数,python,试卷,list,列表,Python,ls,收尾
From: https://blog.csdn.net/bananapai/article/details/143721400