一、选择题
1、python不支持的数据类型有(A)
A、char
B、int
C、float
D、list
2、下列代码输出的结果是(E)
x = “foo”
y = 2
print(x+y)
A、foo
B、foofoo
C、foo2
D、2
E、An exception is thrown
3、关于字符串下列说法错误的是(B)
A、字符应该视为长度为1的字符串
B、字符串以\0标志字符串的结束
C、既可以用单引号,也可以用双引号创建字符串
D、在三引号字符串中可以包含换行回车等特殊字符
4、以下不能创建一个字典的语句是(C)
A、dic1 = {}
B、dic2 = {123:345}
C、dic3 = {[1,2,3]:'uestc'}
D、dic3 = {(1,2,3):'uestc'}
5、下列代码输出的结果是(D)
Kvps = {'a':1,'2':2}
theCopy = kvps
kvps['1'] = 5
sum = kvps['1'] + theCopy['1']
print sum
A、1
B、2
C、7
D、10
6、以下何者是不合法的布尔表达式(B)
A、x in range(6)
B、3=a
C、e>5 and 4==f
D、(x-6)>5
7、下列表达式的值⼀定为True的是(B)
A、5+4j>2-3j
B、3>2==2
C、e>5 and 4==f
D、(x-6)>5
8、已知x=43,ch='A',y = 1,则表达式(x>=y and ch<'b' and y)的值是(B)
A、0
B、1
C、出错
D、True
9、下列表达式中返回为True的是(C)
A、3>2>2
B、'abc'>'xyz'
C、0x56 > 56
D、(3,2)>('a','b')
10、下列Python语句正确的是(AD)
A、min = x if x < y else y
B、max = x > y ? x : y
C、if(x>y) print(x)
D、while True:pass
11、若k为整形,下述while循环执⾏的次数为(A)
k=1000
while k>1:
print k
k=k/2
A、9
B、10
C、11
D、100
12、以下叙述正确的是(B)
A、continue语句的作用是结束整个循环的执行
B、只能在循环体内使用break语句
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用goto语句
13、关于python中的复数,下列说法错误的是(B)
A、表示复数的语法是real+image j
B、实部和虚部都是浮点数
C、虚部必须后缀j且j不区分大小写
D、方法conjugate返回复数的共轭复数
14、下面的语句哪个会无限循环下去(B)
A、for a in range(10):
time.sleep(10)
B、while 1<10:
time.sleep(10)
C、while True:
break
D、a = [3,-1,',']
for i in a[:]:
if not a:
break
15、下面的代码,哪些会输出1,2,3三个数字(BD)
A、for i in range(3):
print(i)
B、aList = [0,1,2]
for i in aList:
print(i+1)
C、i = 1
while i < 3:
print(i)
i+=1
D、for i in range(3):
print(i+1)
16、Python如何定义一个函数(C)
A、class <name>(<type> arg1,<type> arg2,…<type> argN)
B、func <name>(arg1,arg2,…argN)
C、def <name>(arg1,arg2,…argN)
D、def <name>(<type> arg1,<type> arg2,…<type> argN)
二、填空题
1、以下函数需要在其中饮用一个全局变量k,请填写语句:
def fun()
__global k__
k = k+1
2、L=range(100)
1) 取第一到第三个元素:__list(L[:3])__
2) 取倒数第二个元素:__L[-2]__
3) 取后十个元素:__list(L[-10:])__
4) 把L复制给L1用:__L1 = list(L).copy()__
3、判断dict有没有某个key用的方法是:__get或in__
4、获取list的元素个数,和向末尾追加元素的方法分别是__len__、__append__
5.以下的代码的输出将是什么:
def extendList(val,list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print('list1 = %s' % list1)
print('list2 = %s' % list2)
print('list3 = %s' % list3)
结果是:
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']
6.下⾯程序的输出结果是:__yes__
x=True
y=False
z=False
if x or y and x:
print 'yes'
else:
print 'no'
三、简答题
1、如何判断一个变量是不是字符串
- type() == str
2、is 和 == 的区别
- is:比较的是内存地址
- ==:比较的是值
3、Python⾥⾯如何实现tuple和list的转换
- tuple()
- list()
4、list和tuple有什么不同
- list使用[],可以增删改查
- tuple使用(),只能查询,不能增删改,但是元组中的列表是可以修改的
5、如何得到列表list的交集与差集
- 使用set把列表转为集合
- 交集使用:&
- 差集使用:-
6、Python中定义函数时如何书写可变参数和默认参数
- 位置参数,*args,默认参数,**kwargs
7、*args和**kwargs在什么情况下会使⽤到?请给出使⽤**kwargs的事例
- 在不知道会传多少个参数时使用*args和**kwargs,其中*args接收所有按位置传的参数、**kwargs接收所有按关键字传的参数
8、请描述unicode,utf-8,gbk等编码之间的关系
- Unicode叫做万国码,是为了解决传统的字符编码的局限性而产生,它为每一种语言设定了统一并且唯一的二进制编码,可以跨平台、跨语言的进行文本转换与处理,至少使用2个字节来表示,可能会更多
- UTF-8是Unicode的升级版,是对Unicode编码的压缩与处理,不再使用至少2个字节,而是针对所有的字符和符号进行分类
- GBK是中国的中文字符,包含了简体中文和繁体中文,占用了2个字节,前身还有gb2312、gb1830
9、如何使用python删除一个文件
import os
os.remove('文件名')
10、下列代码中,*args,**kwargs的作用是什么
def func(a,b,*args,c=0,**kwargs):
pass
- *args接收所有按位置传的参数
- **kwargs接收所有按关键字传的参数
四、代码题
# 1、d = {'a': 1, 'b': 2, 'c': 3}请打印出key、value对(3分)
d = {'a': 1, 'b': 2, 'c': 3}
for i in d:
print(i, d[i])
# 2、请写出⼀段Python代码实现删除⼀个list⾥⾯的重复元素(6分)
lst = [1, 2, 3, 2, 1]
new_list = []
for i in lst:
if i not in new_list:
new_list.append(i)
print(new_list)
# 3、斐波那契数列1,2,3,5,8,13,21.....根据这样的规律,编程求出400万以内最⼤的斐波那契数,并求出他是第⼏个斐波那契数。(6分)
x = 1
y = 2
lst = []
while x < 4000000:
lst.append(x)
x, y = y, x + y
print('400万以内最⼤的斐波那契数是:%s,它是第%s个斐波那契数' % (lst[-1], len(lst)))
# 4、要求写⼀段代码,实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保留,如果是字符串就拼接,dicta与dictb相加等于dictc。(7分)
dicta = {"a": 1, "b": 2, "c": 3, "d": 4, "f": "hello"},
dictb = {"b": 3, "d": 5, "e": 7, "m": 9, "k": "world"},
dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}
dictc = dicta
for i in dictb:
if i in dictc:
dictc[i] = dicta[i] + dictb[i]
else:
dictc[i] = dictb[i]
print(dictc)
# 5、什么是装饰器?写⼀个装饰器,可以打印输出⽅法执⾏时长的信息(8分)
# 装饰器是在不修改被装饰的函数调用方式的前提下,可以在执行前、后增加功能
import time
def wrapper(func):
def inner(*args, **kwargs):
start_time = time.time()
ret = func(*args, **kwargs)
time.sleep(1)
print('func函数执行的时间是:%s' % (time.time() - start_time))
return ret
return inner
@wrapper
def func(x):
print('x is:%s' % x)
print('func x is over')
func('yy')
# 6、请写出log的实现(主要功能是打印函数名)(8分)
def log(func):
def inner():
print('call %s():' % func.__name__)
ret = func()
return ret
return inner
@log
def now():
print('2017-08-31')
now()
五、附加题
# 有⼀个数据结构如下所⽰,请编写⼀个函数从该结构数据中返回由指定的字段和对应的值组成的字。如果指定字段不存在,则跳过该字段。
# 方法一:
data = {
"time": "2016-08-05T13:13:05",
"some_id": "ID1234",
"grp1": {
"fld1": 1,
"fld2": 2
},
"xxx2": {
"fld3": 0,
"fld5": 0.4
},
"fld6": 11,
"fld7": 7,
"fld46": 8
}
fields = 'fld2|fld3|fld7|fld19'
lst = fields.split('|')
result = {}
data_lst = [1]
while data_lst:
for i in data:
if i in lst:
result[i] = data[i]
if type(data[i]) == dict:
data_lst.append(data[i])
data = data_lst.pop()
print(result)
# 方法二
data = {
"time": "2016-08-05T13:13:05",
"some_id": "ID1234",
"grp1": {
"fld1": 1,
"fld2": 2
},
"xxx2": {
"fld3": 0,
"fld5": 0.4
},
"fld6": 11,
"fld7": 7,
"fld46": 8
}
fields = 'fld2|fld3|fld7|fld19'
def func(data, fields, result={}):
lst = fields.split('|')
for i in data:
if i in lst:
result[i] = data[i]
if type(data[i]) == dict:
func(data[i], fields)
return result
print(func(data, fields))