【Python】2023年Python期末复习题

发布时间 2024-01-02 22:54:14作者: 萌狼蓝天

Python百分百挂科指南

出题人,出的题,水平不咋样,给出的参考答案一堆错误,给出的正确选项单词都能拼错。
非本次考试人员不必看,没有参考价值

选择题

  1. 下列哪个标识符是不合法的()D

A. Name B. _or C. From D.88abc

  • 只能是字母、下划线开头,不能以数字开头

  • 区分大小写

  1. 可以包含多个数据类型,且不能删除其中元素的数据类型是()B

A. 列表 B. 元组 C. 字典 D. 集合

  1. Python不支持的数据类型有()A

A. char B. int C. float D. complex

image-20240102191437333

  1. print(16/4)的结果为()C

A. True B. 4 C. 4.0 D. 4.0+0j

  1. Python中代码如需分行书写时可以在行尾加上()符号。A

A. \ B. / C. | D. -

image-20240102191636030

  1. str(4)+’5’的结果(其中选项的括号表示数据类型)是()C

A. 9(int) B. 45(int) C. 45(str) D. 9(str)

image-20240102191759898

  1. 3+5*6**True/2-8以上语句的执行结果是()。A

A. 10.0 B. 20.0 C. 40.0 D. 80.0

image-20240102192033638

  1. “ab”*2+”c” 结果是()。D

A.‘abc2’ B.‘abcabc’ C.‘abcc’ D.'ababc'

  1. 设a=1,b=2,则表达式a>b and b<3的值为()B

A. True B. False C. 1 D. 0

  1. 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)

  1. 下列关于Python的说法正确的是()A

A. Python执行程序时边解释边执行

B. Python是非开源编程语言

C. Python3.x与Python2.x兼容

D. Python的注释部分既不会执行,也不会被解释器过滤

  1. 下列不属于Python语言特点的是()C

A. 简洁 B. 可移植 C. 仅支持面向过程 D. 高级语言

  1. 下列方法中,可以将字符串’my name is John’每个单词首字母大写的是()。C

A. upper B. lower C. capitalize D. title

A:所有字母大写

B:所有字母小写

C:每個單詞首字母大写,其他字母轉爲小寫

D:第一個單詞首字母大寫,其他字母變爲小寫

  1. 下列哪个代码不能输出’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’)

  1. 下列关于元组的说法错误的是()D

A. 元组可以用sorted()排序

可以排序,但不是改变元组本身,而是通过返回值的方式,将排序后的数据,以列表的形式返回

B. 元组元素可以有多种数据类型

C. (1,2,3)+(4,5,6)会新生成一个元组对象

D. tuple([1])的结果是(1)

image-20240102193423735

  1. 下列关于集合说法正确的是()。C

A. 空集合可以用’{}’创建

在Python中,空集合不能直接用'{}'来创建,因为'{}'在Python中被视为一个空字典。要创建一个空集合,应该使用set()函数,例如s = set()。所以选项A是错误的

B. 集合是有序的

  • 集合(set)在Python中是无序的,它不保持元素的插入顺序。因此,选项B也是错误的。

C. 集合删除不存在的元素不一定会报错

在Python中,如果你尝试从一个集合中删除一个不存在的元素,使用discard()方法不会引发错误。这个方法会静默地忽略不存在的元素。但是,如果你使用remove()方法并尝试删除一个不存在的元素,它会引发一个KeyError。因此,选项C是正确的,但需要注意它指的是使用discard()方法

D. 集合可以访问元素

集合不支持索引操作,因此你不能像访问列表或元组中的元素那样直接访问集合中的元素。你可以迭代集合来查看它的元素,但不能通过索引来访问特定的元素。因此,选项D是错误的

  1. 可以将列表逆序并直接输出逆序后的列表的函数是()B

A. sort() B. reverse() C. sorted() D. reversed()

image-20240102194223952

  1. 执行a = [2,3,1]; a.sort()后,a的值为(),()在控制台输出结果 B

A. [1,2,3],会 B. [1,2,3],不会 C. [3,2,1],会 D. [3,2,1],不会

image-20240102194347128

  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)

image-20240102194812503

  1. 下面关于程序控制结构的说法,正确的是()D

A. Python没有switch....case结构,但是可以用字典等效

B. 多个if并列的程序有时可以等效于if...elif...else

C. break仅能跳出1层循环

break:直接終止一層循環(有多層循環,是不會種植父層循環的)

continue:跳出此次循環

D. 以上说法均正确

  1. 代碼如下:

    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’

  1. 代碼如下

    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

  1. 代碼如下

    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

  1. 关于函数返回值,错误的是()D

A. 可以返回多个return的值

一个函数可以有多个return,一个return可以返回多个值

A选项想表达的意思应该是 一个return可以返回多个值

要不然就是:一个函数,可以有多个return值,但是返回,肯定只执行一个return(也就是只返回一个return)

B. 可以没有返回值

可以不写返回值,默认会返回None

C. 如果没有返回值则什么都不返回

没有写返回值,默认会返回None

D. 如果有多行出现return,其返回值一定是第一行return的值

正常代码,如果存在多个return,那一定是存在选择结构,按选择条件根据实际情况返回

  1. 下列定义默认参数的方法,正确的有()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

  1. 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]

image-20240102215236800

  1. 则下列代码中,不能等效的是()。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)

image-20240102214821327

  1. 关于属性,下列说法错误的是()A

A. 类属性不可以通过实例访问

B. 通过实例修改类属性的值对其他实例的类属性的值没有影响

C. 定义实例属性需要在__init__函数中,前边带self.前缀

D. 访问属性不需要带括号

  1. 类方法是指类对象所拥有的方法,一般用装饰器()来标识。C

A. @staticmethod B. staticmethod C. @classmethod D. classmethod

  1. 关于程序的异常处理,以下选项中描述错误的是()。D

A. 程序异常发生经过妥善处理可以继续执行

B. 异常语句可以与 else 和 finally 保留字配合使用

C. Python 通过 try、except 等保留字提供异常处理功能

D. 编程语言中的异常和错误是完全相同的概念

  1. 代码如下:

    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’

image-20240102214114326

  1. 要导入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. 以上都对

  1. 要随机取一个范围为0-100(包含100)的浮点数,需要用哪个函数()。B

random B. uniform C. randint D. randrange

image-20240102213752889

判断题

  1. Python作为面向对象编程语言,只支持面向对象编程,不支持面向过程编程。(×)

  2. Python多行注释只有一种方法。(×)

  3. 同一代码块中(或者同一级冒号下边的代码),缩进的空格数没有要求,但是缩进必须对齐。(√)

  4. 1+8/4的输出结果是3。(×)

    有除法,会有小数点

  5. 如果要输出一个复数,则即使虚部为0j,也必须要有0j。(√)

  6. ‘+’不能在字符串类型和数值类型之间进行运算,但是’*’可以在字符串类型和数值类型之间进行运算。(√)

  7. 一行代码如果太长,可以用\分行写。(√)

  8. 3//2的输出结果为1.0。(×)

    運算結果是1。// 是整数除法运算符,它会返回商的整数部分,而不是浮点数。

  9. Python不能用保留字或关键字作为标识符,即使字母大小写更改,也不能作为标识符(比如将as改成As)。(×)

    image-20240102220506087

    python區分大小寫,因此這是可以的

  10. Python定义标识符时,第一个字符不能用中文。(×)

    變量名稱可以是中文

  11. 输出字符串中的引号只有一种方法。(×)

    image-20240102220959488

  12. max和min函数可以用于字符串。(√)

    image-20240102221049558

  13. 要实现手动输入,需要在input函数中传入字符串。(×)

  14. title和capitalize两个函数都能实现字符串首字母大写。(✔)

    image-20240102221205591

  15. a=‘HelloPython’,a[0::2]会输出’Hloyhn’。(√)

  16. 列表、元素的索引值不可以为负数。(×)

  17. 元组不能修改内部的元素,但是可以修改其内部的列表中的元素。(√)

  18. 集合的元素可以索引访问。(×)

    在Python中,集合(set)是一个无序的、不重复的元素集合。由于集合是无序的,它们不支持索引操作,因此你不能像访问列表(list)或元组(tuple)那样使用索引来访问集合中的元素。

  19. 字典如果键不存在,既不能访问,也不能为其赋值。(×)

  20. if....elif....else结构中,如果执行了其中一条分支,则不会执行其他分支。(√)

  21. break只能跳出一层循环,continue只能跳出当次循环。(√)

  22. 形参指定义函数时放入括号的参数,实参指调用函数时放入括号的参数。(√)

  23. 在函数体内,有多行出现return时,只输出第一行return的值。(×)

    选择分支结构,根据条件返回对应的的return值

  24. 在函数外部输出该函数内部的变量会报错。(√)

  25. 定义函数时,必备参数和默认值参数的位置都没有要求。(×)

  26. 一个类仅能创建出一个实例。(×)

  27. 定义类方法时,必须传入一个参数class。(×)

  28. 当父类的方法不能满足功能需要时,可以定义一个子类,使其继承父类,然后定义一个同名方法使其功能完善。(√)

  29. 异常处理在程序设计中的某些场合不是必要的。(√)

填空题

  1. Python用___#进行单行注释,用’’’___进行多行注释。

  2. Python可以定义类和实例,说明Python具有的特点是_面向对象_。

  3. 1+2%3-4/6*9 的数据类型为__float__。(运行结果是)

  4. a = 10b = True,则a>10 and b的结果为__False__。

  5. 数值类型包括:整型(int),浮点型(float)、复数(complex)

  6. not 2<3 or 4 == 4 and 6>=8 的结果为__False__。

  7. a = 'Hello Python World',则a[5:15]会输出_' Python Wo'_。

    image-20240101183107948

  8. a=math.pi(设math库已导入),则通过’{:6.2f}’.format(a)输出的字符串有__2__个空格。

    image-20240101183310815

  9. 要输出’Tonny is 21 years old’,程序’{} is {} years old’.format(21,’Tonny’)中两个花括号内应填入__1__、0

    '{1} is {0} years old'.format(21,'Tonny')
    

    image-20240101184124183

  10. 单个字符串比较大小会比较其__ASCII码__。

  11. 'ON' in 'Python'会输出__False__。

    image-20240101184303551

  12. 设a='def class'*3,则a.index(' ')会输出__3__。

    image-20240101184717449

  13. 设a=[0,1,2,3,4,5,6,7,8,9],若要输出所有的奇数,代码a[ ]中要填入__1:10:2__。

    image-20240101184949724

  14. 组合数据类型中,属于无序型数据类型的有__字典__、集合

  15. t=(‘a’,’b’,’c’,’d’),若要修改t里边的元素,可以用__list()__将t转换为列表,再修改。

  16. d={‘name’:’Mary’,’id’:’011924’},执行d[‘class’]=’1’后,d的值为{'name': 'Mary', 'id': '011924', 'class': '1'}

  17. 为去掉列表或元组的重复元素,最简便的方法是__使用set()函数__。

  18. 程序控制结构中,最基本的结构是_顺序结构_,根据条件决定执行哪个代码(块)的结构是__选择结构__,令某个代码(块)重复执行的结构是__循环结构__。

  19. 代码如下:

    for i in range(20):
        if i%3 == 0 & i%10 == 3:
            _________
    	print(i)

为使上述代码输出20以内不是3的倍数或者个位不是3的数,横线需要填入__continue__。

  1. a = lambda x,y:pow(x,y);print(a)会输出_lambda表达式对象_。

    image-20240101191445399

  2. 代码如下:

    def Info(name,uid):
    	print('{}\'s uid is {}'.format(name,uid))
    

    上述代码如果不按参数顺序传参,输出'Lucy’s uid is 2304',则调用函数时的程序代码为

    Info(uid=2304,name='Lucy')

  3. 面向对象的三个重要特性包括:继承封装多态

  4. 实例方法__可以_(可以\不可以)访问类属性,类方法_不可以_(可以\不可以)访问实例属性。

  5. except语句__可以__(可以\不可以)有多个。

  6. 异常处理中__finally__语句下的代码任何情况下都会执行。

  7. 要计算sin(60°)的值,需要用__radians__函数将60°进行转化。

    image-20240101220650231

  8. a**b可以等效于math库中的__pow(a,b)__。

  9. time.time()不可以(可以\不可以)返回当前的详细时间信息。

    image-20240101192308992

    返回的是一个时间戳。

    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结构的流程图,并描述其运行过程。

img

流程图如上,首先判断表达式的值,如果为True,则执行循环体内的代码块,如果为False,该循环体代码执行结束,结束循环。

10、简述定义函数的规则。

答:函数的定义规则:

def 函数名称([参数]):
	[函数注释]
	函数体 #创建语法
	[return 变量]

可以写出定义函数的程序结构,也可以文字描述,也可两者结合。

11、说明函数参数的类型。

位置参数、默认值参数、关键字参数、不定长参数(本题无标准答案,可以参考书上第6章参数的内容,言之有理即可)

image-20240102223256877

11、简述read、readline、readlines的差别。

read一次性读取文件中的所有内容

readline逐行读取文件中的内容,

eadlines同样会读取文件中的全部内容,但是会将每行的内容存储在列表中。

12、定义函数和定义类中的方法都是用def,请描述两者的差异。

第一,所处的位置不同。函数是直接写在文件中而不是类中,方法只能写在类中。

第二,定义的方式不同。在Python中,函数用def定义,而方法虽然是定义在类中的函数,但是在定义其过程中,要根据方法的类型来设置诸如self之类的默认参数。

第三,调用方式不同。函数调用直接使用函数名加参数的方式调用即可,而方法是通过对象方法调用的。

13、简述面向对象中继承、多态。

继承是指在一个现有类(父类)的基础上在构建一个新类(子类),子类可以拥有父类的成员变量以及成员方法;

多态就是指多种状态,就是说当一个操作在不同的对象时,会产生不同的结果。

15、关闭文件的三种方法。

(1)f.close()

(2)通过异常处理关闭

(3)

with open() as A:
     pass

image-20240102223710790

程序题

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)

image-20240101230627766

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) )

image-20240101224546934

6.编写一个lambda表达式,调用内置函数sorted对列表[111, 55, 4]进行排序,按列表元素对应字符串的长度从小到大排序。

a = [111, 55, 4]
b = sorted(a, key = lambda x: len(str(x)))
print( b )

image-20240101221818547