【Python】2023年Python期末复习题
Python百分百挂科指南
出题人,出的题,水平不咋样,给出的参考答案一堆错误,给出的正确选项单词都能拼错。
非本次考试人员不必看,没有参考价值
选择题
- 下列哪个标识符是不合法的()D
A. Name B. _or C. From D.88abc
只能是字母、下划线开头,不能以数字开头
区分大小写
- 可以包含多个数据类型,且不能删除其中元素的数据类型是()B
A. 列表 B. 元组 C. 字典 D. 集合
- Python不支持的数据类型有()A
A. char B. int C. float D. complex
- print(16/4)的结果为()C
A. True B. 4 C. 4.0 D. 4.0+0j
- Python中代码如需分行书写时可以在行尾加上()符号。A
A. \ B. / C. | D. -
- str(4)+’5’的结果(其中选项的括号表示数据类型)是()C
A. 9(int) B. 45(int) C. 45(str) D. 9(str)
- 3+5*6**True/2-8以上语句的执行结果是()。A
A. 10.0 B. 20.0 C. 40.0 D. 80.0
- “ab”*2+”c” 结果是()。D
A.‘abc2’ B.‘abcabc’ C.‘abcc’ D.'ababc'
- 设a=1,b=2,则表达式a>b and b<3的值为()B
A. True B. False C. 1 D. 0
- a1 = input(); b1 = input(); c1 = int(a1+b1)
a2 = int(input()); b2 = int(input()); c2 = a2+b2
上述代码运行后,假设a1和a2均输入1,b1和b2均输入2,c1和c2输出的结果(括号后边表示数据类型)为()C
A. 12(int),3(str) B. 3(str),12(int) C. 12(int),3(int) D. 3(str),12(str)
- 下列关于Python的说法正确的是()A
A. Python执行程序时边解释边执行
B. Python是非开源编程语言
C. Python3.x与Python2.x兼容
D. Python的注释部分既不会执行,也不会被解释器过滤
- 下列不属于Python语言特点的是()C
A. 简洁 B. 可移植 C. 仅支持面向过程 D. 高级语言
- 下列方法中,可以将字符串’my name is John’每个单词首字母大写的是()。C
A. upper B. lower C. capitalize D. title
A:所有字母大写
B:所有字母小写
C:第一個單詞首字母大寫,其他字母變爲小寫
D:每個單詞首字母大写,其他字母轉爲小寫
- 下列哪个代码不能输出’My name is John, I am 21 years old.’ B
A. ‘My name is %s, I am %s years old.’ %(‘John’,21)
B. ‘My name is %s, I am %s years old.’.format(21,’John’)
C. ‘My name is {1}, I am {0} years old.’.format(21,’John’)
D. ‘My name is {name}, I am {age} years old.’.format(age=21,name=’John’)
- 下列关于元组的说法错误的是()D
A. 元组可以用sorted()排序
可以排序,但不是改变元组本身,而是通过返回值的方式,将排序后的数据,以列表的形式返回
B. 元组元素可以有多种数据类型
C. (1,2,3)+(4,5,6)会新生成一个元组对象
D. tuple([1])的结果是(1)
- 下列关于集合说法正确的是()。C
A. 空集合可以用’{}’创建
在Python中,空集合不能直接用'{}'来创建,因为'{}'在Python中被视为一个空字典。要创建一个空集合,应该使用
set()
函数,例如s = set()
。所以选项A是错误的
B. 集合是有序的
- 集合(set)在Python中是无序的,它不保持元素的插入顺序。因此,选项B也是错误的。
C. 集合删除不存在的元素不一定会报错
在Python中,如果你尝试从一个集合中删除一个不存在的元素,使用
discard()
方法不会引发错误。这个方法会静默地忽略不存在的元素。但是,如果你使用remove()
方法并尝试删除一个不存在的元素,它会引发一个KeyError
。因此,选项C是正确的,但需要注意它指的是使用discard()
方法
D. 集合可以访问元素
集合不支持索引操作,因此你不能像访问列表或元组中的元素那样直接访问集合中的元素。你可以迭代集合来查看它的元素,但不能通过索引来访问特定的元素。因此,选项D是错误的
- 可以将列表逆序并直接输出逆序后的列表的函数是()B
A. sort() B. reverse() C. sorted() D. reversed()
- 执行a = [2,3,1]; a.sort()后,a的值为(),()在控制台输出结果 B
A. [1,2,3],会 B. [1,2,3],不会 C. [3,2,1],会 D. [3,2,1],不会
- 设有列表L1 = [‘C’,’C++’,’C#’], L2 = [‘Java’,’Python’,’Go’],欲合并L1,L2为一个列表,下列哪种方法是错误的()。D
A. L1+L2
B. L1.extend(L2)
C. for i in L2:
L1.append(i)
D. L1.insert(3,L2)
- 下面关于程序控制结构的说法,正确的是()D
A. Python没有switch....case结构,但是可以用字典等效
B. 多个if并列的程序有时可以等效于if...elif...else
C. break仅能跳出1层循环
break:直接終止一層循環(有多層循環,是不會種植父層循環的)
continue:跳出此次循環
D. 以上说法均正确
-
代碼如下:
a=‘Hello Python World’ b=' ' for i in a: b = b + i if i == ‘ ’: break print(b)
上述代码会输出()C
A. 'HelloPythonWorld' B. ‘World’ C. ‘Hello’ D. ‘Python’
-
代碼如下
j = 0 for i in range(100): j = j + i # 從1加到99 也就是100x50-50=4950 j2 = 0; i2=0 while i2<100: i2 += 1 # i2從1到99 ,值也就是100 j2 += i2 # j2:從0+100 1+99 …… 49+51 (0到49 就是50組) 。再單獨+50,也就是 100x50+50=5000+50=5050
上述代码中,j和j2的值分别为()A
A. 4950,5050 B. 5050,4950 C. 4950,4950 D. 5050,5050
-
代碼如下
L = list(range(100)) for i in range(100): if i % 2 != 0: L[i] = -i print(sum(L))
上述代码会输出() B
A. 50 B. -50 C. 49 D. -49
- 关于函数返回值,错误的是()D
A. 可以返回多个return的值
一个函数可以有多个return,一个return可以返回多个值
A选项想表达的意思应该是 一个return可以返回多个值
要不然就是:一个函数,可以有多个return值,但是返回,肯定只执行一个return(也就是只返回一个return)
B. 可以没有返回值
可以不写返回值,默认会返回None
C. 如果没有返回值则什么都不返回
没有写返回值,默认会返回None
D. 如果有多行出现return,其返回值一定是第一行return的值
正常代码,如果存在多个return,那一定是存在选择结构,按选择条件根据实际情况返回
- 下列定义默认参数的方法,正确的有()D
1)def fun(a=1,b):
pass
2)def fun(a,b=1):
pass
3)def fun(a,b=1,c=2):
pass
4)def fun(a,b=1,c,d=2):
pass
A. 1和2 B. 2和4 C. 1和3 D. 2和3
- a=[0,2,4,6];b=list(map(lambda x:x/2,a));b.reverse();print(b)的输出结果是()D
A. [0.0,1.0,2.0,3.0] B. lambda对象 C. map对象 D. [3.0,2.0,1.0,0.0]
- 则下列代码中,不能等效的是()。C
A. pow(1,2); 1**2 B. round(1.4); int(1.4) C. divmod(7,2); 7%2
D. math.sqrt(4) ;4**(1/2)
- 关于属性,下列说法错误的是()A
A. 类属性不可以通过实例访问
B. 通过实例修改类属性的值对其他实例的类属性的值没有影响
C. 定义实例属性需要在__init__函数中,前边带self.前缀
D. 访问属性不需要带括号
- 类方法是指类对象所拥有的方法,一般用装饰器()来标识。C
A. @staticmethod B. staticmethod C. @classmethod D. classmethod
- 关于程序的异常处理,以下选项中描述错误的是()。D
A. 程序异常发生经过妥善处理可以继续执行
B. 异常语句可以与 else 和 finally 保留字配合使用
C. Python 通过 try、except 等保留字提供异常处理功能
D. 编程语言中的异常和错误是完全相同的概念
-
代码如下:
try: a = [0,1,2,3,4,5,6,7,8,9,10] b = int(input()) if a[b]<=5: raise ValueError print(a[b]) except IndexError: print('value over than 10') except ValueError: print('value less than 6' )
下列输入输出(每个选项前边为in,后边为out)正确的是()。A
A. -5 6 B. -1 ‘value less than 6 ’ C. 1 1 D. 10 ‘value over than 10’
- 要导入random库并调用库中的randint函数,函数的两个参数为0,100,下列代码哪个是正确的()。B
A.import random
randint(0,100)
B. import random as rd
rd.randint(0,100)
C. from random import random
randint(0,100)
D. 以上都对
- 要随机取一个范围为0-100(包含100)的浮点数,需要用哪个函数()。B
random B. uniform C. randint D. randrange
判断题
-
Python作为面向对象编程语言,只支持面向对象编程,不支持面向过程编程。(×)
-
Python多行注释只有一种方法。(×)
-
同一代码块中(或者同一级冒号下边的代码),缩进的空格数没有要求,但是缩进必须对齐。(√)
-
1+8/4的输出结果是3。(×)
有除法,会有小数点
-
如果要输出一个复数,则即使虚部为0j,也必须要有0j。(√)
-
‘+’不能在字符串类型和数值类型之间进行运算,但是’*’可以在字符串类型和数值类型之间进行运算。(√)
-
一行代码如果太长,可以用\分行写。(√)
-
3//2的输出结果为1.0。(×)
運算結果是1。
//
是整数除法运算符,它会返回商的整数部分,而不是浮点数。 -
Python不能用保留字或关键字作为标识符,即使字母大小写更改,也不能作为标识符(比如将as改成As)。(×)
python區分大小寫,因此這是可以的
-
Python定义标识符时,第一个字符不能用中文。(×)
變量名稱可以是中文
-
输出字符串中的引号只有一种方法。(×)
-
max和min函数可以用于字符串。(√)
-
要实现手动输入,需要在input函数中传入字符串。(×)
-
title和capitalize两个函数都能实现字符串首字母大写。(✔)
-
a=‘HelloPython’,a[0::2]会输出’Hloyhn’。(√)
-
列表、元素的索引值不可以为负数。(×)
-
元组不能修改内部的元素,但是可以修改其内部的列表中的元素。(√)
-
集合的元素可以索引访问。(×)
在Python中,集合(set)是一个无序的、不重复的元素集合。由于集合是无序的,它们不支持索引操作,因此你不能像访问列表(list)或元组(tuple)那样使用索引来访问集合中的元素。
-
字典如果键不存在,既不能访问,也不能为其赋值。(×)
-
if....elif....else结构中,如果执行了其中一条分支,则不会执行其他分支。(√)
-
break只能跳出一层循环,continue只能跳出当次循环。(√)
-
形参指定义函数时放入括号的参数,实参指调用函数时放入括号的参数。(√)
-
在函数体内,有多行出现return时,只输出第一行return的值。(×)
选择分支结构,根据条件返回对应的的return值
-
在函数外部输出该函数内部的变量会报错。(√)
-
定义函数时,必备参数和默认值参数的位置都没有要求。(×)
-
一个类仅能创建出一个实例。(×)
-
定义类方法时,必须传入一个参数class。(×)
-
当父类的方法不能满足功能需要时,可以定义一个子类,使其继承父类,然后定义一个同名方法使其功能完善。(√)
-
异常处理在程序设计中的某些场合不是必要的。(√)
填空题
-
Python用
#
进行单行注释,用'''
进行多行注释。 -
Python可以定义类和实例,说明Python具有的特点是_面向对象_。
-
1+2%3-4/6*9
的数据类型为__float__。(运行结果是) -
若
a = 10
,b = True
,则a>10 and b
的结果为__False__。 -
数值类型包括:整型(int),浮点型(float)、复数(complex)。
-
not 2<3 or 4 == 4 and 6>=8
的结果为__False__。 -
a = 'Hello Python World'
,则a[5:15]
会输出_' Python Wo'_。 -
a=math.pi(设math库已导入),则通过’{:6.2f}’.format(a)输出的字符串有__2__个空格。
-
要输出’Tonny is 21 years old’,程序’{} is {} years old’.format(21,’Tonny’)中两个花括号内应填入__1__、0。
'{1} is {0} years old'.format(21,'Tonny')
-
单个字符串比较大小会比较其__ASCII码__。
-
'ON' in 'Python'会输出__False__。
-
设a='def class'*3,则a.index(' ')会输出__3__。
-
设a=[0,1,2,3,4,5,6,7,8,9],若要输出所有的奇数,代码a[ ]中要填入__1:10:2__。
-
组合数据类型中,属于无序型数据类型的有__字典__、集合。
-
t=(‘a’,’b’,’c’,’d’),若要修改t里边的元素,可以用__list()__将t转换为列表,再修改。
-
d={‘name’:’Mary’,’id’:’011924’},执行d[‘class’]=’1’后,d的值为
{'name': 'Mary', 'id': '011924', 'class': '1'}
。 -
为去掉列表或元组的重复元素,最简便的方法是__使用set()函数__。
-
程序控制结构中,最基本的结构是_顺序结构_,根据条件决定执行哪个代码(块)的结构是__选择结构__,令某个代码(块)重复执行的结构是__循环结构__。
-
代码如下:
for i in range(20):
if i%3 == 0 & i%10 == 3:
_________
print(i)
为使上述代码输出20以内不是3的倍数或者个位不是3的数,横线需要填入__continue__。
-
a = lambda x,y:pow(x,y);print(a)会输出_lambda表达式对象_。
-
代码如下:
def Info(name,uid): print('{}\'s uid is {}'.format(name,uid))
上述代码如果不按参数顺序传参,输出'Lucy’s uid is 2304',则调用函数时的程序代码为
Info(uid=2304,name='Lucy')
。 -
面向对象的三个重要特性包括:继承、封装、多态。
-
实例方法__可以_(可以\不可以)访问类属性,类方法_不可以_(可以\不可以)访问实例属性。
-
except语句__可以__(可以\不可以)有多个。
-
异常处理中__finally__语句下的代码任何情况下都会执行。
-
要计算
sin(60°)
的值,需要用__radians__函数将60°进行转化。 -
a**b
可以等效于math库中的__pow(a,b)__。 -
time.time()不可以(可以\不可以)返回当前的详细时间信息。
返回的是一个时间戳。
time.time()
是 Python 的内置函数,它返回的是从1970年1月1日00:00:00(称为 Unix epoch)到现在的秒数,是一个浮点数。这个函数本身不会返回关于日期或时间的详细信息。
簡答題
1.简述Python的特点(至少3个,并对每个特点进行详尽解释)
易学:语法简单,易于学习
面向对象:支持继承、封装、多态
便于维护:可移植性强
生态完善:具有各种各样的库
2.标识符的命名规则。(任意3条即可)
(1)标识符只能包含数字、字母(包括各国语言的非特殊字符)、下划线;
(2)首个字符必须是字母或者下划线;
(3)不能与关键字和保留字重复;
(4)区分大小写
3.请写出format函数中,模板格式字符串参数,并解释其参数含义。
fill
:空白处填充字符;
align
:控制对齐方式;
sign
:数字前的符号;
width
:字符串的宽度;
,
:千分位符;
precision
:小数位数;
type
:格式化类型。
4.Python作为解释型语言,请描述编译型语言和解释型语言的不同。
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,直接执行就可以了。
解释型语言就没有这个编译过程,而是在程序运行的时候,通过解释器对程序逐行做出解释,然后直接运行。
编译型语言:先编译,后运行
解释型语言:边解释,边运行
5.写出列表的增、删、改、查(索引)可以用的操作或函数(上述4种操作至少写出两种操作方法或函数,不足两种的写出一种即可),如果不能进行相关操作,请说明。
增:+或append,
删:del、remove,
改:lst[i]=X(其中lst表示列表名称,i表示索引,X表示其值),
查:lst.index(),lst[i]
6-8题,对象分别为元组、字典、集合(如果不能进行相关操作,请说明。)
元组:
增只能用+合并,
元组不能删除、修改内部元素,
查:tup.index(),tup[i]
字典:(d表示字典名称)
增:d[key]=value(key不存在),d.update(),
删:del d[key],d.pop(key),
改:d[key]=value(key存在),d.update(),
查:d[key],d.get(key)(key存在)
集合:(s表集合名称)
增:s.add(),s.update(),
删:remove(),discard(),
字典只能通过增、删的方式间接修改,查:字典不能索引或访问。
9、画出while结构的流程图,并描述其运行过程。
流程图如上,首先判断表达式的值,如果为True,则执行循环体内的代码块,如果为False,该循环体代码执行结束,结束循环。
10、简述定义函数的规则。
答:函数的定义规则:
def 函数名称([参数]):
[函数注释]
函数体 #创建语法
[return 变量]
可以写出定义函数的程序结构,也可以文字描述,也可两者结合。
11、说明函数参数的类型。
位置参数、默认值参数、关键字参数、不定长参数(本题无标准答案,可以参考书上第6章参数的内容,言之有理即可)
11、简述read、readline、readlines的差别。
read一次性读取文件中的所有内容
readline逐行读取文件中的内容,
eadlines同样会读取文件中的全部内容,但是会将每行的内容存储在列表中。
12、定义函数和定义类中的方法都是用def,请描述两者的差异。
第一,所处的位置不同。函数是直接写在文件中而不是类中,方法只能写在类中。
第二,定义的方式不同。在Python中,函数用def定义,而方法虽然是定义在类中的函数,但是在定义其过程中,要根据方法的类型来设置诸如self之类的默认参数。
第三,调用方式不同。函数调用直接使用函数名加参数的方式调用即可,而方法是通过对象方法调用的。
13、简述面向对象中继承、多态。
继承是指在一个现有类(父类)的基础上在构建一个新类(子类),子类可以拥有父类的成员变量以及成员方法;
多态就是指多种状态,就是说当一个操作在不同的对象时,会产生不同的结果。
15、关闭文件的三种方法。
(1)f.close()
(2)通过异常处理关闭
(3)
with open() as A:
pass
程序题
1.中国有句俗语叫“三天打鱼两天晒网”,设有某人从某天开始“三天打鱼两天晒网”(即从第一天开始打鱼,连续三天后,后连续两天晒网,以此往复),从键盘输入一个整数,判断此人是在晒网还是打鱼,如果在晒网输出’N’,如果在打鱼输出’F’。
输入样例:
输入:7,输出:F
输入:10,输出:N
fors = ['F','F','F','N','N']
a = int(input())
b = (a%len(fors))-1 # 索引值要減去1
print(fors[b])
2.输入一个字符串,并任意输入一个字符,输出该字符的个数。
输入样例:
问题1:
输入1:’人生苦短,我学Python’,输入2:’P’,输出:1
就是查詢一個字符在一個字符串裏面出現的次數
i = input()
j = input()
n = 0
for s in i:
if j == s: # 出現了想要的字符
n += 1 # 計數值加一
print(n)
3.网吧计费:设XX网吧推出了优惠活动,新加入网吧会员的顾客可以享受7折优惠(新加入该网吧的会员需要在网吧充值至少20元,优惠时长为2小时),2小时后,恢复原价,设原价为6元/小时,定义一个函数,传入该顾客充值的金额,计算某新顾客最长能在网吧游玩的时间(设该新顾客充值金额小于20元时,不加入会员,该新顾客若充值金额大于等于20元,则加入会员,时长保留1位小数,单位为小时)。
输入样例:
输入:18,输出:3.0
输入:27,输出:5.1
def netprice(m):
if 0<m<20:
t = m/6
else:
t = 2+(m-6*0.7*2)/6
print('{:.1f}'.format(t))
netprice(18)
netprice(27)
4.屏幕像素点坐标,设某个屏幕的像素点横坐标范围为(-960,959),纵坐标范围为(-540,539),从键盘输入两个数,分别作为横坐标、纵坐标储存在元组中,并判断该坐标是否在该屏幕,如果不在该屏幕,则抛出异常(异常类型可以自定义,可以自行用raise抛出内置异常ValueError,也可以断言)
输入样例:
输入:248,492,输出自定(也可以什么都不执行)
输入:-960,540,抛出异常
a = int(input())
b = int(input())
if -960<=a<=959 and -540<=b<=539:
pass
else:
raise ValueError
或
a = int(input())
b = int(input())
assert -960<=a<=959 and -540<=b<=539, ‘Out of screen’
5.编写函数fun(x),其参数是一个元素为实数的列表。计算并输出给定列表中每相邻两个元素的平方根之和。在主程序中输入列表的值,调用函数fun,并输出计算结果。
输入样例:
输入:4 2 4 16 64
输出:[3.41 6.0 12.0]
from math import sqrt
def fun( a ):
b = [] # 用于存放结果
Len = len(a) # 获取列表最大长度
i = 0 # 计数值
while i < Len - 1: # 从第一个开始,一直到倒数第二个
sm = sqrt(a[i]) + sqrt(a[i+1])
b.append(sm) # 将计算结果添加到列表当中
i += 1 # 计数值自增1
return b # 将结果返回
a = []
Len = eval(input("输入列表长度:")) # eval() 将字符串内容转成对应的数据格式
for i in range(Len):
t = eval(input("输入单个值:"))
a.append(t)
print(a)
print( fun(a) )
6.编写一个lambda表达式,调用内置函数sorted对列表[111, 55, 4]进行排序,按列表元素对应字符串的长度从小到大排序。
a = [111, 55, 4]
b = sorted(a, key = lambda x: len(str(x)))
print( b )
作者:萌狼蓝天
QQ:3447902411(仅限技术交流,添加请说明方向)
转载请注明原文链接:https://www.cnblogs.com/zwj/p/17941544/python2023exam