python语言特点
python语言特点:
- 开源
- 免费
- 跨平台
- 解析执行
复制=、copy()和deepcopy()
- 用=复制元素,原object改变,现object也随之改变
- 用copy()复制object,原object改变,现object不变,若object中包含了list,改变原object的list元素,现object的list元素也随之改变。
- 用deepcopy()复制object,原object改变,现object的任何元素都不会变。
1 | import copy |
Python自带的模块
Python有着形形色色爬虫相关的库,以下哪个库Python自带不需要额外下载。A
A.urlib python内置,用于爬虫
B.urlib3 第三方库
C.Requests python内置,用于http
D.lxml 第三方库
extend方法
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),添加数据时要用[]
把数据括起来。
在Python3中,程序运行结果为: lists = [1, 1, 2, 3, 4, 5, 6] lists.remove(1) lists.extend([7,8,9]) print(lists)。C
A.[2,3,4,5,6]
B.[1,2,3,4,5,6,[7,8,9]]
C.[1,2,3,4,5,6,7,8,9]
D.[2,3,4,5,6,7,8,9]
del方法
将列表内的所有元素均删除,且列表存在,使用del方法
字符串变换
字符串是不可变类型,无法直接修改字符串的某一位字符。replace()函数用于替换字符串,其用法为字符串序列.replace(旧子串, 新子串, 替换次数)
。
若a = 'abcd',若想将a变为'ebcd',则下列语句正确的是。 D
A.a[0] = 'e'
B.a.replace('a", "e')
C.a[1] = 'e'
D.a = 'e' + "bcd"
divmod()函数
divmod(a,b)函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a//b,a%b)
下面代码的输出结果是 x=10 y=3 print(divmod(x,y))。D
A.(1, 3)
B.3,1
C.1,3
D.(3, 1)
python2与python3除法的区别
在python2中,由于“地板除”的 缘故,每次除完后只剩整数。在python3中的除法是精确计算。
在Python3中,下列程序循环的次数为: n = 1000 while n > 1: print(n) n = n / 2。B
A.9
B.10
C.11
D.无限循环
python2里只有9次,因为500、250、125、62、31、15、7、3、1 。python3里有10次,因为500、250、125、62.5、31.25、15.625、7.8125、3.90625、1.953125、0.9765625。
函数返回值
以下程序的输出结果是 def hub(ss, x = 2.0,y = 4.0): ss += x * y ss = 10 print(ss, hub(ss, 3))。B
A.22.0 None
B.10 None 函数hub设置没有返回值,ss默认为10,hub默认返回done
C.22 None
D.10.0 22.0
python查找顺序
当使用import导入模块时,按python查找模块的不同顺序可划分为以下几种: ①环境变量中的PYTHONPATH ②内建模块 ③python安装路径 ④当前路径,即执行python脚本文件所在的路径 其中查找顺序正确的一组是。C
A.①④②③ B.②①④③ C.②④①③ D.①②③④
range范围
range(n)实际上是取值0~n-1。
sum([i*i for i in range(3)])的计算结果是。B
A.3
B.5
C.2
D.14
readlines函数
read(size)
方法,每次最多读取size个字节的内容。不需要通过close函数关闭文件。
关于以下代码的描述,错误的选项是()with open( ' abtxt ' , ' r+' ) as f:lines = f.readlines() for item in lines:print(item)。A
A.执行代码后,abc.txt文件未关闭,必须通过close()函数关闭
B.打印输出abc.txt文件内容
C.item是字符串类型
D.lines是列表类型
lambda表达式
- lambda只是一个表达式不是代码块,而def是一个语句。
- 在内部只能包含一行代码,自动返回最后一个表达式的值,没有return,参数列表不需要用括号。
- if、for或print语句不能用于lambda中,不能共享给其他程序调用。
关于匿名函数叙述正确的是()。ABC
A.lambda只是一个表达式,函数体比def简单很多
B.lambda的主体不是一个代码块
C.lambda函数只能写一行
D.可以访问全局变量和函数体以外的变量
运算符优先级
- 括号:()
- 幂运算:**
- 按位取反:~
- 正号、负号:+、-
- 乘除、取模、取整除:*、/、%、//
- 加、减:+、-
- 左移、右移:<<、>>
- 按位“与”:&
- 按位“异或”、按位“或”:^、|
- 比较运算符:<=、<、>、>=
- 等于、不等于:==、!=
- 赋值运算符:=、%=、/=、//、//=、-=、+=、*=、**=
- 身份运算符:is、is not
- 成员运算符:in、not in
- 逻辑运算符:and、or、not
Python中,运算符由高到低为。C
A.逻辑运算符>比较运算符>赋值运算符>位运算符
B.位运算符>赋值运算符>比较运算符>逻辑运算符
C.位运算符>比较运算符>赋值运算符>逻辑运算符
D.逻辑运算符>赋值运算符>比较运算符>位运算符
下列哪些语句在Python中是合法的。ACD
A.x = y = z=1
B.x =(y = z+ 1)
C.x,y = y,x
D.x+= y
for i,x in enumerate() 函数
enumerate是枚举的意思,把元素一个个列举出来,它返回的是元素以及对应的索引。例如:
1 | 1,2,3,4,5] line = [ |
在Python3中,下列程序运行结果为: lists = [1, 2, 3, 4] tmp = 0 for i,j in enumerate(lists): tmp += i * j print(tmp) 。A
A.20 tmp=0+1*2+2*3+3*4=2+6+12=20
B.30
C.100
D.None
replace函数
replace函数不会改变原string的内容。
执行以下程序,输入”93python22”,输出结果是 w = input("请输入数字和字母构成的字符串:") for x in w: if '0'<= x <= '9': continue else: w.replace(x,'') print(w)。C
A.python9322
B.python
C.93python22
D.9322
floor函数
math.floor(x)函数用于将x向下取整,它接收数字/数字表达式并返回不大于数字的最大整数值。math.ceil(x)函数用于x向上取整,它接收数字/数字表达式并返回最接近的数字最小整数值。
以下代码运行结果是什么?0import math print math.floor(5.5)。A
A.5
B.5.0
C.5.5
D.6
按位与&计算
python 中 & (按位与) 和 | (按位或) 是把 2个数据转为二进制然后在做相应的计算。如
1 | a = 10 # 10的二进制为1010 |
下面描述正确的是。ABC
A. 在python中逻辑与运算符不能写作&&,要写作and
B.&是两个数字按二进制位作与运算的操作符
C.3&2的结果为2 00011 00010=>00010=2
D.3&3的结果为0 00011 00011=>00011=3
python保留字符
以下哪些是Python中的保留字符?ABCD
A.def
B.global
C.finally
D.yield
可变数据类型和不可变数据类型
可变数据类型:list(列表)、dict(字典)、set(集合)
不可变数据类型:数值类型(int、float、bool)、string(字符串)、tuple(元组)
下列选项属于不可变类型的是。CD
A.列表
B.字典
C.元组
D.字符串
python内置函数
以下属于python3内置函数的是。ABCD
A.str()
B.sum()
C.zip()
D.sorted()
python数据类型
python中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Dict(字典)
- Tuple(元组)
- Set(集合)
其中Number里包含了int、float、bool、complex(复数)。在python3中只有一种整数类型int,没有python2中的长整型long。
以下哪些是Python的数字类型。ACD
A.long
B.double
C.float
D.complex
控制循环语句
continue:将控制返回到循环的开始
break:将控制带出循环
pass:编写空循环,除此之外还用于空的控制语句、函数和类
Python中,循环控制语句有。BCD
A.goto
B.break
C.continue
D.pass
__name__
__name__
是python的一个内置类属性,它存储模块的名称。
python模块既可以被调用,也可以独立运行。而调用时__name__
存储的是py文件名(模块名称),独立运行时存储的是__main__
。其作用主要是用来区分当前模块是独立运行还是被调用。
关于__name__
的说法,下列描述正确的是。BCD
A.它是Python提供的一个方法
B.每个模块内部都有一个__name__
属性
C.当它的值为’main‘时,表示模块自身在运行
D.当它的值不为’main’时,表示模块被引用
json.dumps()与json.loads()
json.dumps():将python对象编码成Json字符串
json.dump():将python对象转化成Json储存到文件中
json.loads():将Json字符串解码成python对象
json.load():将文件中的json格式转化成python对象提取
运行下列代码段,输出结果为True的是( )。BD
1 | import json |
1 | data='{"one":"1","two":"2","three":"3","four":"4","five":"5"}' |
1 | import json |
1 | import json |
类定义体组成
类定义体组成:
- 成员的控制访问信息(public、protected、private)
- 数据成员
- 成员函数
在类的定义形式中,组成了类定义体是。ABC
A.成员的访问控制信息
B.数据成员
C.成员函数
D.私有消息
关于return函数
在python中,关于函数return语句的正确说法是。ACD
A.return指定函数返回值,用来结束函数
B.在python中return语句只可返回一个值
C.无返回值函数中可以没有return语句
D.如果不给return,函数默认返回None
无返回值函数是指void这一类的函数。
万物皆为对象
容器对象(list、dict、set等)中可以存放任何对象,包括整数、字符串,函数也可以作存放到容器对象中。
Python中函数是对象,描述正确的是。ABCD
A.函数可以赋值给一个变量
B.函数可以作为元素添加到集合对象中
C.函数可以作为参数值传递给其它函数
D.函数可以当做函数的返回值
切片取数
L[0:3]表示从索引0开始取数,直到索引3为止,但不包括索引3的元素。
若输入的字符串str=’asdfgh’,想要输出为’asdfg’,则可以使用以下方法。AC
A.str[:-1]
B.str[:-2]
C.str[:5]
D.str[:4]
下列可以得到字符串'ccc'的Python语句是。ABD
A.cc'+'c'
B.'c'*3
C.'bcccb'[1:3]
D.'bcccb'[1:4]
若a = range(100),以下哪些操作是合法的。ABCD
A.a[-3]
B.a[2:13]
C.a[::3]
D.a[2-3]
函数调用
在模块A导入B模块的函数func(),并执行函数调用,下列写法正确的是。AC A. 导入:import B 调用 B.func() B. 导入:import B 调用 func() C. 导入:form B import func 调用 func() D. 导入:form B import func 调用B. func()
python不能正常启动
python不能正常启动的项有:
- 拼写错误
- 错误表达式
- 缩进错误
只有手动抛出异常才能正常启动。
python的六种进程间通信方式
- msg_queue(消息队列)
- pipeline for single duplex(单工管道)
- pipeline for half duplex(双工管道)
- name pipeline(命名管道)
- share memory(共享内存)
- semaphore(信号量)
在python3中进程之间通信通常可以采用如下哪些方式。ABD
A.Queue
B.Pipe
C.全局变量
D.共享数据
__new__
和__init__
的区别
相同点:
- 两者都是python面向对象语言的函数。
不同点:
__new__
是在实例创建之前被调用的,是个静态方法。因为它的任务是创建实例然后返回该实例对象。__init__
是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,是一个实例方法。通常用于初始化一个类实例。
关于__new__
与__init__
的区别,说法正确的是。ABCD
A.__new__
是一个静态方法,而__init__
是一个实例方法
B.__new__
方法会返回一个创建的实例,而__init__
什么都不返回
C.只有在__new__
返回一个创建的实例时,后面的__init__
才能被调用
D.当创建一个新实例时调用__new__
,初始化一个实例时用__init__
输入输出总结
单行输入
同一行里空格分隔输入两个数:
a,b=list(map(int,input().split()))
同一行里逗号分隔输入两个数:
a,b=list(map(int,input().split(','))
)使用sys模块输入多位数:
1
2
3
4
5
6
7
8
9
10
11
12import sys
#输入数据,返回一个包含多个字符串的列表a,strip()用于截取掉末尾的换行符
a=sys.stdin.readline().strip()
#a中的数据以逗号分隔时,去掉逗号,返回一个包含多个字符串的列表b
b=list(map(int,a.split(',')))
#a中的数据以空格分隔时,去掉空格,返回一个包含多个字符串的列表c
c=list(map(int,a.split()))
#同一行中输入以空格分隔的两位数n,m
n,m=list(map(int,sys.stdin.readline().strip().split()))
多行输入
把所有行合在一个列表中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import sys
list=[]
list_new=[]
for line in sys.stdin:
list_new=line.split()
list.append(list_new)
# list.extend(list_new)
print(list)
#使用append的输出结果:
3 2
[['3', '2']]
1 5 6
[['3', '2'], ['1', '5', '6']]
1 3
[['3', '2'], ['1', '5', '6'], ['1', '3']]
#使用extend的输出结果:
3 2
['3', '2']
1 5 6
['3', '2', '1', '5', '6']
1 3
['3', '2', '1', '5', '6', '1', '3']行数固定且第一行给出,各行独立获取:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import sys
lines=sys.stdin.readlines()
n=int(lines[0])
x1=list(map(int,lines[1].split()))
x2=list(map(int,lines[2].split()))
x3=list(map(int,lines[3].split()))
print(n,x1,x2,x3)
#运行结果如下:
输入:
3
1 5 6
1
8
windows系统同时按下ctrl+z+enter结束输入
输出结果为:
3 [1, 5, 6] [1] [8]第一行输入人数n和科目m,后续每行录入每人的m科成绩:
1
2
3
4
5
6
7
8
9
10
11
12n,m=list(map(int,input().split()))
lines=[]
for i in range(n):
lines.append(list(map(int,input().split())))
print(lines)
#运行结果如下:
输入:
2 3
15 32 23
58 20 69
输出结果为:
[[15, 32, 23], [58, 20, 69]]行数未知时,输入多行数字序列:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16res=[]
while True:
try:
res.append(list(map(int,input().split())))
except:
break
print(res)
#运行结果如下:
输入:
3 63 72 72 1
1 52 62 5 1
2 4 7
5 8 9 3 53 12 74
windows系统同时按下ctrl+z+enter结束输入
输出结果为:
[[3, 63, 72, 72, 1], [1, 52, 62, 5, 1], [2, 4, 7], [5, 8, 9, 3, 53, 12, 74]]
单行输出
同一行里逗号分隔输出两个数:print(str(a)+','+str(b))
多行输出
按行遍历输出多行输入中的元素,注意:不是输出一个list或tuple:
1 | import sys |
补充
标准库OS的listdir()方法默认只能列出指定文件夹中当前层级的文件和文件夹列表,而不能列出其子文件夹中的文件。
递归是从问题的最终目标出发,逐渐将复杂问题化为简单问题,最终求得问题。递推是从简单问题触发,一步步的向前,最终求得问题。
列表对象的extend()方法属于原地操作,调用前后列表对象的地址不变。
Python中子类能继承父类全部的公有属性和方法。
使用print()函数可以将信息写入文件:
print("Hello, World!", file=open('file.txt', 'w'))
。两个特殊的形参关键字形参和命名关键字形参不能设定默认值,或者说它们默认值就是空元组和空字典。
为了限制开头几个参数只能按位置传递,从python3.8开始,正式引入限定位置形参,它们必须放在形参表的最前面,并在后面使用斜杠/(独占一个参数位)与普通形参分隔。如
def fun(a,b,c,/,d) #a,b,c成为限定位置形参
。默认值可以从限定位置形参或普通形参中的任意一个开始设定,除了命名关键字形参,所有带默认值的形参必须位于五默认值的形参之后。
定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的参数。
使用print()函数时,使用
\n
可以进行换行输出。表达式
[1,3,2] > [1,2,3]
的值为True
,{1,3,2} > {1,2,3}
的值为False
。使用if
'__name__'
=='__main__'
,可以保证模块被导入时,其内的代码不会被执行。表达式
pow(3, 2)==3**2
的值为True
。其中**
代表乘方。所有的except子句一定在else和finally的前面。
Python中break和continue语句不可以单独使用,只能在循环中使用。
split()将一个字符串分割为子字符串,然后将结果作为字符数组返回。