记一次python考试题

这个我参加的一次考试题,附上答案解析。供大家学习。

一、单项选择题(每小题1分,共30分)
1、下列哪个语句在Python中是非法的? ( B )
A、x = y = z =1 B、x = (y = z + 1) C、x, y = y, x D、x += y

2、关于Python内存管理,下列说法错误的是( B )。
A、变量不必事先声明 B、变量无须先创建和赋值而直接使
C、变量无须指定类型 D、可以使用del释放资源
解析:不先赋值会报错,is not defined。

3、下面哪个不是Python合法的标识符。( B )
A、int32 B、40XL C、self D、name
解析:合法的标识符不能以数字开头。

4、下列哪种说法是错误的。( D )
A、除字典类型外,所有标准对象均可以用于布尔测试
B、空字符串的布尔值是False
C、空列表对象的布尔值是False
D、值为0的任何数字对象的布尔值是False
解析:当一个列表L = [0]时,bool(L)为True

5、Python不支持的数据类型有( A )。
A、char B、int C、float D、list
解析:Python里无char型数据

6、关于字符串下列说法错误的是( B )。
A、字符应该视为长度为1的字符串
B、字符串以\0标志字符串的结束
C、既可以用单引号,也可以用双引号创建字符串
D、在三引号字符串中可以包含换行回车等特殊字符
解析:Python因为字符串有长度限制,到了长度就标志字符串的结束。

7、以下不能创建一个字典的语句是( C )。
A、dict1 = {} B、dict2 = { 3 : 5 } C、dict3 ={[1,2,3]: “uestc”} D、dict4 = {(1,2,3): “uestc”}
解析:字典的键必须是不变的,而列表是可变的。

8、下列Python语句正确的是:( D )
A、min = x if x< y = y B、max = x > y ?x:y C、if (x >y) print(x) D、while True :pass
解析:A应为:min = x if x< y else x
B应为为max = x if x>y else y,
C应为if (x >y): print(x)

9、以下代码运行结果是什么?( C )
counter = 1
def doLotsOfStuff():
global counter
for i in (1, 2, 3):
counter += 1
doLotsOfStuff()
print (counter)

A、1 B、3 C、4 D、7

10、以下代码运行结果是什么?( C )
for i in range(2):
print (i)
for i in range(4,6):
print (i)

A、2, 4, 6 B、0,1, 2, 4, 5, 6 C、0, 1, 4, 5 D、1, 2, 4, 5, 6
解析:第一个循环输出0,1,第二个循环输出4,5

11、以下代码运行结果是什么?( B )
import math
print (math.floor(5.5))

A、5 B、5.0 C、5.5 D、6 E、6.0
解析:math.floor的意思是返回最大整数

12、假设有个文件/usr/lib/python/person.py内容如下,执行以下命令输出结果是什么?( D) python /usr/lib/python/person.py

class Person:
def init(self):
pass
def getAge(self):
print(name)

p = Person()
p.getAge()

A、Person B、getAge C、usr.lib.python.person D、main
解析:当内部单独执行模块时,name__的返回值就是__main,当被外部模调用时,返回的是模块的名字,在此即为person。

13、以下代码运行结果是什么?( B )
names1 = [‘Amir’, ‘Barry’, ‘Chales’, ‘Dao’]
if ‘amir’ in names1:
print (1)
else:
print (2)

A、1 B、2 C、报错 D、结果为空

14、以下代码运行结果是什么?( C )
kvps = { ‘1’ :1, ‘2’ : 2 }
theCopy =kvps.copy()
kvps[‘1’] = 5
sum = kvps[‘1’]+ theCopy[‘1’]
print (sum)

A、1 B、2 C、6 D、10
解析:字典的浅拷贝,只拷贝父对象,即theCopy拷贝了kvps,当kvps改变表面时,theCopy不改变相应值。

15、以下选项中,不是 Python 语言保留字的是( A )。
A、 do B、pass C、except D、 while

16、计算机中信息处理和信息储存用( A )。
A、二进制代码 B、十进制代码 C、十六进制代码 D、ASCII代码

17、Python源程序执行的方式是( B )。
A、编译执行 B、解析执行 C、直接执行 D、边编译边执行

18、Python语言语句块的标记是( C )。
A、分号 B、逗号 C、缩进 D、/

19、以下是字符转换成字节的方法是( B )。
A、decode() B、encode() C、upper() D、rstrip()
解析:字符转字节(编码)是encode(),字节转字符(解码)是decode()

20、有关异常说法正确的是( B )。
A、程序中抛出异常终止程序
B、程序中抛出异常不一定终止程序
C、拼写错误会导致程序终止
D、缩进错误会导致程序终止

21、“ab”+”c”*2 结果是( C )。
A、abc2 B、abcabc C、abcc D、ababcc

22、以下会出现错误的是( B )。
A、‘北京’.encode() B、‘北京’.decode()
C、‘北京’.encode().decode() D、以上都不会错误
解析:decode()是解码,encode()是编码,如果字符串是unicode编码就直接编码不需要解码。

23、以下语句的打印结果是( B )。
str1 = “Runoob example…wow!!!”
str2 = “exam”
print(str1.find(str2, 5))

A、6 B、7 C、8 D、-1

24、下面对count()、index(),、find()方法描述错误的是( C )。
A、count()方法用于统计字符串里某个字符出现的次数
B、find()方法检测字符串中是否包含子字符串 str 如果包含子字符串返回开始的索引值,否则返回-1
C、index()方法与find()方法类似,可以检测字符串中是否包含子字符串 str,如果str不在返回-1
D、以上都错误
解析:同find()方法类似,index()方法也可以用于检索是否包含指定的字符串,不同之处在于,当指定的字符串不存在时,index()方法会抛出异常。

25、以下不属于Python中的关键字的是( D )。
A、raise B、with C、import D、final

26、调用以下函数返回的值是( D )。
def myfun():
pass

A、0 B、出错不能运行 C、空字符串 D、None

27、函数如下:
def showNnumber(numbers):
for n in numbers:
print(n)

下面选项中在调用函数时会报错的是( C )。
A、showNumer([2,4,5]) B、showNnumber(‘abcesf’)
C、showNnumber(3.4) D、showNumber((12,4,5))

28、关于Python类,说法错误的是( B )。
A、类的实例方法必须创建对象后才可以调用
B、类的实例方法必须创建对象前才可以调用
C、类的类方法可以用对象和类名来调用
D、类的静态属性可以用类名和对象来调用

29、下列说法正确的是( A )。
A、直接导入一个包,相当于执行了这个包中的__init__文件
B、在模块的导入中,需要产生循环引用问题
C、装饰器函数property是一个帮助你将类中的方法伪装成属性的内置函数,调用方法的时候需要主动加括号
D、面向对象的三个特性是封装、多态、抽象
解析:B错在在模块的导入中,不要产生循环引用问题
C错在装饰器函数property是一个帮助你将类中的方法伪装成属性的内置函数,调用方法的时候不需要主动加括号
D错在面向对象的三个特性是封装、多态、继承

30、下列不属于使用正则表达式匹配字符串的是( D )。
A、re.findall(’\d+’,‘python’)
B、re.search(’\d+’,‘python’)
C、re.match(’\d+’,‘python’)
D、re.split(’\d+’,‘python’)
解析:re.split(’\d+’,‘python’)是起到的是分割字符串的作用。

二、填空题(每空1分,共10分)
1、在函数中,传入数字、字符或者元组等不可变对象属于 值 传递,传入列表、字典等可变对象属于 引用 传递。

2、使用可变长参数函数fun(*args, **kwargs),按照fun(2,3,4)调用,则args值为 (2,3,4) ,kwargs为 空字典 。
解析:*args接收的是位置参数,*kwargs接收的是关键字参数

3、使字符串开头首字母大写的字符串函数有 title() 和 capitalize() 。

4、文件可以读写的模式有 r+ 和 w+ 。

5、Python 私有 成员只能内部访问,不能从对象来访问。

6、a = [1, 2, 3]; a.append(7); 前者a的地址与后者a的地址 相同 。(填“相同”或“不同”)

三、简答题(共20分)
1、简述is和==的区别。(1分)
==比较操作符:用来比较两个对象是否相等,value做为判断因素;
is同一性运算符:比较判断两个对象是否相同,id做为判断因素。
==:值相等,值运算
is:内存地址相等,身份运算,is要求更苛刻,不仅要求值相等,还要求内存地址相同

2、写出位与字节之间的关系。(1分)
8位 = 1字节

3、利用集合将列表L =[1, 2, 5, 1, 5, 7]去重。(1分)
列表转集合,集合转列表
set = set(L)
L = list(set)

4、Python中的列表和元组有什么不同?(3分)
语法差异:使用方括号[]创建列表,而使用括号()创建元组
是否可变:列表是可变的,而元组是不可变的,这标志着两者之间的关键差异。可以修改列表的值,但是不修改元组的值。由于列表是可变的,我们不能将列表用作字典中的key。 但可以使用元组作为字典key。
重用与拷贝:元组无法复制。 原因是元组是不可变的。 如果运行tuple(tuple_name)将返回自己。
List 和tuple 区别
不同点:
1、定义的方式:list[] tuple()
2、是否可变:list可变,tuple() 不可变
3、list中有 append(),insert() 函数,tuple中没有
相同点:都是有序的集合(容器)

5、’你好’使用utf-8编码时,占用多少位数和字节数?使用gbk编码时,占的位数和字节数又是多少?(2分)
’你好’: utf-8: 48位6字节,gbk:32位4字节。

6、数字,字符串,列表,元祖,字典对应的布尔值的False分别是什么?(3分)
数字:0,字符串:空字符串,列表:空列表,元组:空元组,字典:空字典。

7、什么是lambda函数?它有什么好处?请举一个简单的lambda函数例子。(3分)
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数
lambda函数:首要用途是指点短小的回调函数
lambda函数例子(lambda [arguments]:expression):
a=lambdax,y:x+y
a(3,11)

8、请说明深拷贝和浅拷贝二者的区别并分别写出实现两种拷贝的方法。(3分)
浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变)。亦可理解为:(浅拷贝后,原始对象中的不可变数据类型的与拷贝对象中的不可变数据类型的地址不同。原始对象中的可变数据类型的与拷贝对象中的可变数据类型的地址相同)
深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变).亦可理解为:(深拷贝后,原始对象中的不可变类型与可变类型的地址都与拷贝对象不同)
浅拷贝实现方法:1,完全切片方法;2,工厂函数,如list();3,copy模块的copy()函数
深拷贝实现方法:copy模块的deep.deepcopy()函数

9、 请写出四种可迭代的对象。(3分)
字符串,列表,元祖,字典,集合等

四、编程题(40分) 1、请打印出字典d = {'a':1,'b':2,'c':3}的key,value键值对。(2分)

d = {'a' : 1, 'b' : 2, 'c' : 3}
for dict_key, dice_value in d.items():
print(dict_key, dice_value )

2、请编写代码输出九九乘法表。(3分)

for i in range(1,10):for j in range(1,i+1):print('%sx%s=%s'%(i,j,i*j),end=' ')  #end避免换行print()

3、请编写代码,对列表lst = [18, 88, 5, 8, 41, 6, 1, 23, 99, 2, 35]内的元素进行从小到大的冒泡排序。(3分)

lst = [18, 88, 5, 8, 41, 6, 1, 23, 99, 2, 35]
long=len(lst)
while True:count = 0for i in range(long-1)if lst[i] > lst[i+1]:   # 比较,lst[i], lst[i+1] = lst[i+1], lst[i] # 交换count+=1if count==0break
print(lst)

4、有文件t1.txt里面的内容为:
201811001, 张三, 19, 男, 1181, 数学
201822002, 李四, 20, 女, 1182, 英语
201845003, 王五, 18, 女, 1185, 农业
利用文件操作,将其构造成如下数据类型。
[{‘学号’:‘201811001’,‘姓名’:‘张三’,‘年龄’:‘19’,‘性别’:‘男’,‘班级’:‘1181’,‘专业’:‘数学’}, …](6分)

lst = []
with open("t1.txt", encoding="UTF-8") as data:# 读取每一行数据for line in data:number,name,age,gender,clas,major = line.strip().split(",")  #切割dct={'学号':number,'姓名':name,'年龄':age,'性别':gender,'班级':clas,'专业':major}lst.append(dic)   #放入列表
print(lst)

5、已知两个字典如下:
dict1 = {‘a’:1,’b’:2,’c’:3,’d’:4,’f’:’hello’}
dict2= {‘b’:3,’d’:5,’e’:7,’m’:9,’k’:’world’}

请写一段代码将上面的两个字典的相加生成一个新的字典,将不同的key对应的值保留,相同的key对应的值相加后保留,如果是字符串就拼接,使得最后结果为:{‘a’: 1, ‘b’: 5, ‘c’: 3, ‘d’: 9, ‘f’: ‘hello’, ‘e’: 7, ‘m’: 9, ‘k’: ‘world’}。(6分)

lst=[]
dict1 = {'a':1,'b':2,'c':3,'d':4,'f':'hello'}
dict2 = {'b':3,'d':5,'e':7,'m':9,'k':'world'}
for dict_key, dict_value in dict1.items():if dict_key in dict2:  #判断是否有相同dict[dict_key]+=dict_value   #两个value相加lst.append(dict_key)    #记录下相同的key
for i in range(len(lst))del dict1[lst[i]]   #删除重复
dict2.update(dict1)   #合并(更新)字典
print(dict2)

6、定义一个圆环类,计算圆环的周长和面积。圆环周长 = 外环周长 + 内环周长。(6分)

class Ring:def __init__(self,r1,r2):self.r1 = r1self.r2 = r2def area(self):return round(self.r1 ** 2 * pi - self.r2 ** 2 * pi, 2)def perimeter(self):return round(self.r1 * 2 * pi + self.r2 * 2 * pi, 2)

解法二:组合的思想

class Ring:def __init__(self,r1,r2):self.r1 = Circle(r1)self.r2 = Circle(r2)def area(self):return self.r1.area() - self.r2.area()def perimeter(self):return self.r1.perimeter() + self.r2.perimeter()

7、请编写代码生成随机的6位验证码,该验证码由数字和字母组成,数字为0-9,字母区分大小写,例:1a98FU。小写字母ASCװ码为97 - 122,大写字母ASCװ码为65 - 90。(6分)
chr(97) - chr(122):小写字母a-z
chr(65) - chr(90):大写字母A-Z
import random

解法一:基础版

code = ''
for i in range(6):rand_num = str(random.randint(0,9))rand_alph = chr(random.randint(97,122))rand_alph_upper = chr(random.randint(65,90))atom_code = random.choice([rand_num,rand_alph,rand_alph_upper])code += atom_code
print(code)

解法二:函数版

def rand_code(n=6):code = ''for i in range(n):rand_num = str(random.randint(0,9))rand_alph = chr(random.randint(97,122))rand_alph_upper = chr(random.randint(65,90))atom_code = random.choice([rand_num,rand_alph,rand_alph_upper])code += atom_codereturn coderet = rand_code()
print(ret)

8、请写一个装饰器,可以打印输出方法执行时长的信息。(8分)

import time
def run_time(func): def inner(*args, **kwargs): start_time = time.time()    ret = func() end_time = time.time() return end_time - start_time return inner
@run_time
def hello_world():time.sleep(0.1)print('hello world')
ret = hello_world()
print(ret)

9、请用正则表达式匹配字符串,并返回匹配结果,要求匹配的字数一定是6位数字,如果不是返回false ,如果是则返回true,例如:输入”123456” 程序返回true,输入”123abc”或”123”则返回false。(3分)

import reresult1=re.findall(r'^\d{6}$','12343aadwad213g213v')   result2=re.findall(r'^\d{6}$','12343aadwad213g213v')
print(bool(result1))  #匹配失败
print(bool(result1))  #撇皮成功

10、请用python代码统计一个文件夹中所有文件的总大小,比如一个dir1文件夹下有两个文件夹dir2,dir3,dir2,dir3文件夹下分别有1个文件(word1和word2),统计两个word的大小为多少字节。(6分)

解法一:递归

import os
ret=r'C:\Users\86139\Desktop\python code\dir1'   #添加路径,同时取消转义字符
sum = 0
def function(dirpath):lst = os.listdir(dirpath)  # 查看指定目录下的文件以及子目录for el in lst:  new_dirpath = dirpath+'\\'+el   #双\\等于\  print(new_dirpath)if os.path.isfile(new_dirpath):  #判断该路径是否为文件getsize = os.path.getsize(new_dirpath)   #是则计算大小global sumsum += getsizeelse:     #否则递归function(new_dirpath)return sumnum = function(ret)
print(sum)

解法二:循环

import os
path=r'C:\Users\86139\Desktop\python code\dir1'   #添加路径,同时取消转义字符
sum = 0
llst=[]   #用于存放目录路径的列表
llst2=[]    #用于存放文件路径的列表
llst.append(path)
while llst:lst=os.listdir(''.join(llst[0]))for el in lst:  new_path =''.join(llst[0])+'\\'+el  if os.path.isfile(new_path):llst2.append(new_path)   #存放文件路径else:llst.append(new_path)    #存放目录路径llst.remove(''.join(llst[0]))
for i in range(len(llst2)):getsize = os.path.getsize(''.join(llst2[i]))   #是则计算大小sum+=getsize
print(sum)

end!

记一次python考试题相关推荐

  1. 记一次 python 截取高低位(>> 和 运算符)

    记一次 python 截取高低位(>> 和 & 运算符) . 首先我们要知道低字节和高字节:(左高右低) 在编程语言中,字符一般是占 16 位,8 位为一字节,所以有高位字节和低位 ...

  2. Python考试题,大学生必看

     给你分享一下我自己亲身经历过的python考试题 记得点个关注~ 你可以参考下面的题进行练习,考试题换汤不换药,希望对你有帮助~ 一.选择题 1.下列哪个语句在Python中是非法的?( B ) A ...

  3. 记一次python虚拟环境中使用allure无法生成测试报告问题

    记一次python虚拟环境中使用allure无法生成测试报告问题 问题描述: 虚拟环境使用pytest -s -q Test_AutoCase.py --alluredir=report/xml 可正 ...

  4. 深圳python爬虫培训南山科技园钽电容回收_记一次python 爬虫爬取深圳租房信息的过程及遇到的问题...

    为了分析深圳市所有长租.短租公寓的信息,爬取了某租房公寓网站上深圳区域所有在租公寓信息,以下记录了爬取过程以及爬取过程中遇到的问题: 爬取代码: import requests from reques ...

  5. python解决租房问题_记一次python 爬虫爬取深圳租房信息的过程及遇到的问题

    为了分析深圳市所有长租.短租公寓的信息,爬取了某租房公寓网站上深圳区域所有在租公寓信息,以下记录了爬取过程以及爬取过程中遇到的问题: 爬取代码: import requests from reques ...

  6. 百家号 python高手养成_python高手养成记04:python的所有数据类型,一篇足矣

    上一篇:python高手养成记03:面向对象是什么?网友:能3天掌握一门语言 题序: 在上一篇中,我们理解了面向对象的思想,只需要大致理解即可,因为后面我们会专门做这一块的培训.在本篇中,小编来讲解p ...

  7. 一道对10年间中国行政区划个数进行对比的Python考试题

    本文起意来自于某 Python 考证班的一道考试题,题目要求使用 import csv 导入模块,对10年间的中国行政区划个数进行对比,编者将采用3种方法进行解题.其中,前2种方法按考题要求使用了   ...

  8. termux使用教程python-Termux折腾记--进阶之python库使用

    sshd Termux超级终端折腾记 Termux超级终端的牛x之处我就不在这里描述了. 这次讲的是如何在android手机上安装python的各种科学库和图形库. Jupyter是这次介绍的重点对象 ...

  9. 记一次python后端从web服务器下载文件

    记一次tornado框架python后端从web服务器下载文件过程 date 2020.7.21 Q:暂定的过程 用post方法,先前用的get,传body内文件名. 1.首先获取前端需要下载什么文件 ...

最新文章

  1. python归并排序 分词_python-归并排序
  2. STM32学习笔记——DMA控制器(向原子哥学习)
  3. linux nginx大量TIME_WAIT的解决办法--转
  4. Silverlight 3 全系列开发工具发布
  5. matlab 显示歌词,【Matlab编程】生日快乐歌(显示歌词)—matlab版
  6. 又是系统时间惹的祸 TreeView
  7. 遍历目录和子目录中的文件
  8. mac下selenium+python环境搭建
  9. [Zeppelin]Zeppelin安装与初体验
  10. python源码剖析_Python源码剖析读后感1000字
  11. 蓝牙模块HC-06的基本设置和他的AT指令集
  12. PLC1200配方功能使用---配方功能快速入门
  13. web页面和ssh登陆到防火墙
  14. 软件人员kpi制定模板_软件开发人员月度KPI考核指标
  15. Mobile(3)-攻防世界-APK逆向
  16. 【SSL】记录一次PEM转P12证书
  17. OI 刷题记录——每周更新
  18. “即刻搜索”使用率几乎为零
  19. 加油站收银系统 Java_提升加油站收银效率的收银系统
  20. java站点挂了_java 输入挂

热门文章

  1. Big Faceless:PDF Viewer for JAVA Crack
  2. 指令流水线 —— 分类和多发技术
  3. 算法 —— 排序 —— 优先队列
  4. mysql根据类型和数据正负进行分组
  5. 键指如飞--Mac电脑快捷键学习
  6. Django项目——CRM
  7. java中实现的十进制转换成二进制的简单代码
  8. Excel按背景颜色分类统计各颜色个数的操作
  9. Katalon自动化测试基础教程(一)
  10. StackWalker 堆栈打印