《Python程序设计》
green表示搞懂
黄色表示读懂到懂
红色表示不懂
18题题目有误
较难的题:10,15,26,34,45,46,63,64,83.95
填空题100题(每题1分,共100分)
1、Python安装扩展库常用的是_______工具 (pip)
2、在Python中__________表示空类型 (None)
3、列表、元组、字符串是Python的_________(有序?无序)序列 (有序)
4、查看变量类型的Python内置函数是________________ (type())
5、查看变量内存地址的Python内置函数是_________________ (id())
6、以3为实部4为虚部,Python复数的表达形式为___________或________ (3+4j,3+4J)
7、Python运算符中用来计算整商的是_________ (//)
8、Python运算符中用来计算集合并集的是_______ (|)
9、表达式[1, 2, 3]*3的执行结果为______________________ ([1,2,3,1,2,3,1,2,3])
#相乘及相加,小学毕业都会。
10、语句x = 3==3, 5执行结束后,变量x的值为_____________ )((True,5))
#优先级 比较>赋值
11、已知 x = 3,那么执行语句 x += 6 之后,x的值为_______________ (9)
12、已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) == 496103280 的值为___________ (False)
13、已知 x = 3,那么执行语句 x *= 6 之后,x的值为________________(18)
14、表达式“[3] in [1, 2, 3, 4]”的值为________________ (False)
15、列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为 (None)
#只用在list,无返回值。sorted和sort区别 ;sorted可以用在可迭代的类型,有返回值; 返回值为None的几种情况
#1,get()根据key获取对应的value,如果key不存在则返回None
2,列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为 (None)
16、假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是______________________ ([6,7,9,11])
17、任意长度的Python列表、元组和字符串中最后一个元素的下标为________ (-1)
18、Python语句‘‘.join(list(‘hello world!‘))执行的结果是____________________ (‘h e l l o w o r l d’)
#将""中的字符一个个取出来,然后以"里面"的东西拼到一起
19、转义字符’\n’的含义是___________________ (回车)
20、Python语句list(range(1,10,3))执行结果为___________________ ([1,4,7])
#1+步长+步长
21、表达式 list(range(5)) 的值为________________ [0,1,2,3,4]
22、______________命令既可以删除列表中的一个元素,也可以删除整个列表 (del)
#删除的函数的几个特点
23、已知a = [1, 2, 3]和b = [1, 2, 4],那么id(a[1])==id(b[1])的执行结果为___________ (True) #小整数池
24、切片操作list(range(6))[::2]执行结果为________________( [0,2,4])
25、表达式 ‘ab‘ in ‘acbed‘ 的值为________ (False)
26、假设n为整数,那么表达式 n&1 == n%2 的值为_____________ (True)
##& 就是and运算,就是n化为二进制后,每一位与1进行and运算
| 就是or 运算,就是N 化为二进制后,每一位与1进行or运算
27、语句 x = (3,) 执行后x的值为_______________ ((3,))
28、语句 x = (3) 执行后x的值为________________(3)
29、已知x=3和y=5,执行语句 x, y = y, x 后x的值是____ (5)
30、字典对象的___________方法可以获取指定“键”对应的“值”,并且可以在指定“键”不存在的时候返回指定值,如果不指定则返回None (get())
31、字典对象的_____________方法返回字典中的“键-值对”列表 (items())
32、字典对象的____________方法返回字典的“键”列表 (key())
33、字典对象的______________方法返回字典的“值”列表 (value())
34、已知 x = {1:2},那么执行语句 x[2] = 3之后,x的值为________________ ({1:2,2:3})
##集合无序:所以以上就是直接添加操作
35、表达式 {1, 2, 3, 4} - {3, 4, 5, 6}的值为__________________ ({1,2})
36、表达式set([1, 1, 2, 3])的值为____________________ ({1,2,3})
#集合去从
37、已知 x = {‘a‘:‘b‘, ‘c‘:‘d‘},那么表达式 ‘a‘ in x 的值为_____________(True)_
38、已知 x = {‘a‘:‘b‘, ‘c‘:‘d‘},那么表达式 ‘b‘ in x 的值为_____________(False)_
39、已知 x = {‘a‘:‘b‘, ‘c‘:‘d‘},那么表达式 ‘b‘ in x.values() 的值为______________ (True)
40、表达式 1<2<3 的值为_________ (True)
41、表达式 3 or 5 的值为________ (3)
42、表达式 0 or 5 的值为_________ (5)
43、表达式 3 and 5 的值为____________ (5)
44、表达式 3 and not 5 的值为_____________(False)_
45、表达式 3 | 5 的值为__________(7)
46、表达式 3 & 6 的值为_________ (2)
47、表达式 3 ** 2 的值为_________ (9)
48、表达式 3 * 2的值为___________(6)
49、已知 x = [3, 5, 7],那么表达式 x[10:]的值为____________ ([])
50、已知 x = [3, 5, 7],那么执行语句 x[len(x):] = [1, 2]之后,x的值为______________ ([3,5,7,1,2]) # 列表=列表 后者元素直接覆盖前者的元素
51、已知 x = [3, 7, 5],那么执行语句 x.sort(reverse=True)之后,x的值为_________________ ([7,5,3]) 函数没有返回值
52、已知 x = [3, 7, 5],那么执行语句 x = x.sort(reverse=True)之后,x的值为_________ (None)
53、已知 x = [1, 2, 3, 2, 3],执行语句 x.pop() 之后,x的值为_____________ ([1,2,3,2])
pop()#默认删除最后一个
54、已知 x = list(range(10)),则表达式 x[-4:] 的值为__________ ([6,7,8,9])
55、已知 x = [3, 5, 7],那么执行语句 x[1:] = [2]之后,x的值为________________ ([3,2])# 直接覆盖
56、已知 x = [3, 5, 7],那么执行语句 x[:3] = [2]之后,x的值为________________ ([2])
57、已知x为非空列表,那么执行语句y = x[:]之后,id(x[0]) == id(y[0])的值为__________ (True)
58、已知 x = [1, 2, 3, 2, 3],执行语句 x.remove(2) 之后,x的值为____________ ([1,3,2,3]) #从第一个开始删除
59、表达式 list(str([1,2,3])) == [1,2,3] 的值为______________(False)
#list会将字符串中的每一个字符都取出来,变成一个个小字符串放到列表里
60、表达式 str([1, 2, 3]) 的值为__________________(‘[1,2,3]’)
##??吞象
61、表达式 str((1, 2, 3)) 的值为__________________ (‘(1,2,3)’)
62、Python中用于表示逻辑与、逻辑或、逻辑非运算的关键字分别是_________、___________、_________ (and, or, not)
63、Python 3.x语句 for i in range(3):print(i, end=‘,‘) 的输出结果为_____________________ (0,1,2,)
64、对于带有else子句的for循环和while循环,当循环因循环条件不成立而自然结束时________(会?不会?)执行else中的代码 (会)
65、在循环语句中,__________语句的作用是提前结束本层循环 (break)
66、在循环语句中,_______语句的作用是提前进入下一次循环 (continue)
67、表达式 ‘abcabcabc‘.rindex(‘abc‘) 的值为____________ (6)
#从右面对应到后,看下标
68、表达式 ‘:‘.join(‘abcdefg‘.split(‘cd‘)) 的值为______________ (ab:efg)
#"".join()底层原理就是for循环出来一个一个字符串中的字符,按""中的规则连接起来。
69、表达式 ‘Hello world. I like Python.‘.rfind(‘python‘) 的值为________ (-1)
‘python‘为一个元素,其余还是一个字符一个索引
70、表达式 ‘abcabcabc‘.count(‘abc‘) 的值为_____________ (3)
71、表达式 ‘apple.peach,banana,pear‘.find(‘p‘) 的值为______________ (1)
72、表达式 ‘apple.peach,banana,pear‘.find(‘ppp‘) 的值为________ (-1)
73、表达式 ‘abcdefg‘.split(‘d‘) 的值为__________________ ([‘abc‘, ‘efg‘])
74、表达式 ‘:‘.join(‘1,2,3,4,5‘.split(‘,‘)) 的值为__________________("1:2:3:4:5")
75、表达式 ‘Hello world‘.upper() 的值为___________(‘HELLO WORLD‘)
76、表达式 ‘Hello world‘.lower() 的值为_____________ (‘hello world‘)
77、表达式 ‘Hello world‘.lower().upper() 的值为__________(‘HELLO WORLD‘)_
78、表达式 ‘Hello world‘.swapcase().swapcase() 的值为______________ (‘Hello world‘) #.swapcase大小写和前后顺序完全颠倒。
79、表达式 r‘c:\windows\notepad.exe‘.endswith(‘.exe‘) 的值为_____________ (True)
80、表达式 r‘c:\windows\notepad.exe‘.endswith((‘.jpg‘, ‘.exe‘)) 的值为_______(True)
81、表达式 ‘C:\\Windows\\notepad.exe‘.startswith(‘C:‘) 的值为_________ (True)
82、表达式 ‘a‘ + ‘b‘ 的值为_____________ (‘ab’)
83、语句 print(re.match(‘abc‘, ‘defg‘)) 输出结果为_____________ (None)
84、已知 x = (3), 那么表达式 x * 3 的值为__________ (9)
85、已知 x = (3,),那么表达式 x * 3 的值为_____________ (3,3,3)
86、已知列表 x = [1, 2, 3, 4],那么执行语句 del x[1] 之后x的值为____________ ([1,3,4])
87、表达式 [1] * 2 的值为_________________ ([1,1])
88、表达式 [1, 2] * 2 的值为______________ ([1,2,1,2])
89、已知列表 x = [1, 2, 3],那么执行语句 x.insert(1, 4) ,x的值为___________ ([1,4,2,3])
90、已知列表 x = [1, 2, 3],那么执行语句 x.insert(0, 4) ,x的值为___________ ([4,1,2,3])
91、已知列表 x = [1, 2, 3],那么执行语句 x.pop(0) 之后,x的值为_________ ([2,3])
#将删除的元素作为返回值返回
92、表达式 {1, 2, 3, 4, 5} ^ {4, 5, 6, 7} 的值为_________________________(({1,2,3,6,7}))
93、表达式 ‘abcab‘.replace(‘a‘,‘yy‘) 的值为___________( (‘yybcyyb‘))
replace,将对应元素全部替换
94、表达式 ‘hello world, hellow every one‘.replace(‘hello‘, ‘hi‘) 的值为________________________(‘hi world ,hiw every one‘ )
95、已知字符串 x = ‘hello world‘,那么执行语句 x.replace(‘hello‘, ‘hi‘) 之后,x的值为____________( ‘hi world‘)
96、已知 x = ‘a b c d‘,那么表达式 ‘,‘.join(x.split()) 的值为__________(‘a,b,c,d‘)_ ##有双引号
97、表达式 ‘abcab‘.strip(‘ab‘) 的值为_________(“c”)_
98、表达式 ‘abc10‘.isdigit() 的值为________________(False)__
99、表达式 [1,2,3].count(4) 的值为_______________ (0)
#4的个数
100、语句 x, y, z = [1, 2, 3] 执行后,变量y的值为__________ (2)
简答题8题(每题5分,共40分)
1 什么是编程语言?什么是程序?什么是编程?为什么要编程
语言是人与人之间沟通的介质,而编程语言则是人与计算机之间沟通的介质。
编程就是人把自己想命令计算机干的事用编程语言翻译出来并写到文件里(这一系列的文件就是程序)
人类编程的目的就是为了让计算机按照人类的思维逻辑(程序)自发地去工作从而把人力解放出来。
2 请画出完整的计算机完整体系结构图
https://images2018.cnblogs.com/blog/1036857/201803/1036857-20180314160549829-1723176303.png
3 简述计算机三大核心硬件与程序运行的关系
程序最先是存放于硬盘中的,程序的运行是先从硬盘把代码加载到内存中,然后cpu是从内存中读取指令运行。
4、python程序运行的三个阶段是?
1.先启动python解释器
2.python解释器将文件内容从硬盘读入内存
3.python解释器读入代码,识别python语法
5、简述python内存管理机制:垃圾回收机制与小整数池
内存管理:垃圾回收机制gc
核心原理:引用计数
分代回收:提升效率
标记清除:循环引用导致内存泄露问题
6 简述深浅copy原理
- 浅拷贝
针对于可变对象,浅拷贝的时候会开辟一块内存空间,仅仅是最顶层开辟了,里层元素的地址是相同的。
针对于不可变对象,浅拷贝的时候仅仅是拷贝了引用,并不会开辟新的内存空间
浅拷贝之后,改变拷贝之后的对象中的不可变对象,并不会影响原始对象中的元素,但是,如果改变拷贝之后的对象中的可变对象,会同时影响原始对象中的元素。
- 深拷贝
深拷贝除了顶层拷贝以外,还对子元素进行了拷贝,本质就是递归浅拷贝。
```python
import copy
lis = [‘Tim Cook‘, ‘50‘, [‘basketball‘, ‘football‘]]
# 浅拷贝
# new_lis = copy.copy(lis)
# new_lis[-1].append(‘music‘)
# print(f‘原列表:{lis}‘)
# print(f‘浅拷贝列表:{new_lis}‘)
‘‘‘
运行结果:
原列表:[‘Tim Cook‘, ‘50‘, [‘basketball‘, ‘football‘, ‘music‘]]
浅拷贝列表:[‘Tim Cook‘, ‘50‘, [‘basketball‘, ‘football‘, ‘music‘]]
‘‘‘
# 深拷贝
new_lis_2 = copy.deepcopy(lis)
new_lis_2[-1].append(‘music‘)
print(f‘原列表:{lis}‘)
print(f‘深拷贝列表:{new_lis_2}‘)
‘‘‘
运行结果:
原列表:[‘Tim Cook‘, ‘50‘, [‘basketball‘, ‘football‘]]
深拷贝列表:[‘Tim Cook‘, ‘50‘, [‘basketball‘, ‘football‘, ‘music‘]]
‘‘‘
```
7、简述所有数据类型的用途
数字类型:用于数学运算,比较运算
字符串:记录描述性质的状态
列表:记录同种属性的多个值
字典:记录不同属性的多个值
布尔:记录真假两种状态
8、编程语言分类方式如下,请问py是一种什么类型的语言
编译型or解释型
静态语言or动态语言
强类型or弱类型
python属于解释型,强类型,动态类型的语言
编程题3题(每题30分,共90分)
1、编写用户注册功能
要求对用户输入账号,密码进行合法性校验
用户名必须是字母组成,密码至少9位
然后将合法的用户信息按照某种格式永久存放
下来
![技术分享图片](/img/jia.gif)
1 while True:
2 inp_name = input(‘请输入注册名:‘).strip()
3 inp_pwd = input(‘请输入注册密码:‘).strip()
4 if inp_name.isalpha():
5 if len(inp_pwd) >= 3:
6 print(‘注册成功‘)
7 else:
8 print(‘注册密码至少3位‘)
9 else:
10 print(‘注册名必须是字母‘)
11
12
13 with open(‘user_info.txt‘, mode=‘at‘, encoding=‘utf-8‘)as f:
14 f.write(‘%s:%s\n‘ % (inp_name, inp_pwd))
View Code
2、编写登录功能
要求基于题目1用户注册的信息进行账号验证
要求支持多账号登录
要求输错三次则永久锁定该账号
![技术分享图片](/img/jia.gif)
1 dic_info = {}
2 with open(‘user_info.txt‘, ‘r‘, encoding=‘utf-8‘) as f:
3 for line in f:
4 user_name = line.strip().split(‘:‘)[0]
5 user_pwd = line.strip().split(‘:‘)[1]
6 # print(user_name)
7 # print(user_pwd)
8 dic_info[user_name] = [user_pwd, 1] # 将用户与用户的密码及输错次数封装在一个字典里
9 print(dic_info)
10 while True:
11 inp_name = input(‘请输入用户名:‘)
12 inp_pwd = input(‘请输入用户密码:‘)
13 with open(‘black_list‘, mode=‘r+‘, encoding=‘utf-8‘) as f1:
14 black_list = f1.read().strip().split(‘\n‘)
15 print(black_list)
16 if not inp_name in dic_info:
17 print(‘用户名不存在‘)
18 ##此时inp_name==user_name
19 elif inp_name in black_list:
20 print(‘用户已加入黑名单‘)
21 break
22 elif inp_pwd == dic_info[inp_name][0]:
23 print(‘用户登录成功‘)
24 break
25 else:
26 if dic_info[inp_name][1] == 3:
27 print(‘当前用户输错次数过多,已被锁定‘)
28 with open(‘black_list‘, mode=‘at‘, encoding=‘utf-8‘)as f:
29 f.write(inp_name)
30 f.write(‘\n‘)
31 break
32 else:
33 dic_info[inp_name][1] += 1
34 print(‘密码错误‘)
View Code
3、选做题(用到后面的知识):
在题目2的基础上把账号的永久锁定改为
只锁定3分钟
![技术分享图片](/img/jia.gif)
1 import time
2 ## 将用户与用户的密码及输错次数封装在一个字典里
3 dic_info = {}
4 with open(‘user_info.txt‘, ‘r‘, encoding=‘utf-8‘) as f:
5 for line in f:
6 user_name = line.strip().split(‘:‘)[0]
7 user_pwd = line.strip().split(‘:‘)[1]
8 # print(user_name)
9 # print(user_pwd)
10 dic_info[user_name] = [user_pwd, 1]
11 print(dic_info,‘用户注册信息单‘)
12 #用户输入用户名
13 while True:
14 end = time.time()
15 inp_name = input(‘请输入用户名:‘)
16 inp_pwd = input(‘请输入用户密码:‘)
17 #将被锁定名单一行一行读到列表中,,放到这里可以被循环打开,看是否有新的锁定账号。
18 with open(‘lock_list‘, mode=‘rt‘, encoding=‘utf-8‘)as f2:
19 for line in f2:
20 lock_list = line.strip().split(‘:‘)
21 # print(lock_list)
22 if len(lock_list) > 1:##查看锁定文件中是否有被锁定名单
23 start = float(lock_list[1])#如果有就将开始生成时间赋值给start.
24 if not inp_name in dic_info:
25 print(‘用户名不存在‘)
26 elif inp_name in lock_list and end - start < 180:#查看锁定时间
27 print(‘用户被锁定中‘)
28
29
30 else:
31 if inp_pwd == dic_info[inp_name][0]:
32
33
34 print(‘用户登录成功‘)
35 break
36 else:
37 print(‘密码错误‘)
38 #查看该账号输错次数是否超过三次
39 if dic_info[inp_name][1] == 3:
40 print(‘当前用户输错次数过多,已被锁定三分钟‘)
41 #将该锁定账号和其锁定时间一同写入文件中
42 with open(‘lock_list‘, mode=‘at‘, encoding=‘utf-8‘)as f:
43 start=time.time()
44 f.write(‘%s:%s\n‘%(inp_name,start))
45 #记录账号输错次数
46 dic_info[inp_name][1] += 1
View Code
Python基础篇===》《《第一次考试》》 [2021/4/3]
原文:https://www.cnblogs.com/huo-shui/p/14614813.html