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.Kvps = {‘1’:1,’2’:2} D
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语句正确的事(多选) A、D
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循环执⾏的次数为: B
k=1000
while k>1:
print k # 注意是py2(向下取整,所以 A 是最正确的)
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三个数字(多选,选错不得分): B、D
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、function <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])___ # print(list(range(100)[:2]))
L=range(100) # 先切片,再变成列表(如果先把range(100)变成列表的那内存占空间就大了)
for i in L:
if i<3:
print(i)
2) 取倒数第二个元素__*L[-2]_____
L=range(100)
list1 = []
for i in L:
list1.append(i)
print(list1[-2])
3) 取后十个元素___list(L[-10:])____
L=range(100)
list1 = []
for i in L:
list1.append(i)
print(list1[-1:-11:-1])
4) 把L复制给L1用___赋值:L1 = L__复制:L1 = L.copy()
3、判断dict有没有某个key用的方法是__*in(比get好) :key in dict_____
dict = {'qq':1,'pp':9}
print(dict.get('qq','没有p')) # 有则返回值,没有返回设置的,默认None
print(dict.get('p','没有p'))
4、获取list的元素个数,和向末尾追加元素的方法分别是__len(list1)__ __list1.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(x) is str
② type(x) == str
2、is 和 == 的区别
is 比较的是内存地址;
== 比较的是值
3、Python⾥⾯如何实现tuple和list的转换。
lis = [1,2,3]
tu = (9,8,7)
t = tuple(lis)
l = list(tu)
print(t,l)
4、list和tuple有什么不同
list 可变,用[] tuple 不可变, 用()
5、如何得到列表list的交集与差集。 # 或者用set?
①
l1 = [1,2,3,4]
l2 = [1,3,5,7]
l3 = []
l4 = []
for i in l1:
if i not in l2:
l3.append(i) # 差集
if i in l2:
l4.append(i) # 交集
print(l3,l4)
②
先转换成集合, a&b a-b
6、Python中定义函数时如何书写可变参数和默认参数?
可变参数 用 *args 默认参数用 l = 9
参数的顺序是 位置参数,*args,默认参数,**kwargs
7、*args和**kwargs在什么情况下会使⽤到?请给出使⽤**kwargs的事例
*args和**kwargs在不知道传的是什么参数的时候用,这两个总能包括所有的参数类型
**kwargs的事例我还真忘了(打散?后无序迭代?)
666:参数个数不确定的时候会使用到:*args是接收按照位置传参的所有参数,**kwargs是接收按照关键字传参数的所有参数
8、请描述unicode,utf-8,gbk等编码之间的关系?
Unicode万国码 四字节一个字符,浪费空间所以就有了升级版的 utf-8
utf-8 占三字节,Python3中使用 utf-8
gbk 占两字节,中国制造,最开始应用于中国,后来流行于亚洲(但最好是不要用)
9、如何使用python删除一个文件
import os
os.remove('文件')
10、def func(a,b,c=0,*args,**kwargs):
pass
*args,**kwargs的作用是什么?
接收没定义的所有位置参数,默认参数之后的所有关键字参数
四、写代码
1、d={‘a’:1,’b’:2,’c’:3}请打印出key、value对
for k in d:
print(k,d[k])
2、请写出⼀段Python代码实现删除⼀个list⾥⾯的重复元素。
list1 = [1,2,3,4,2]
list2 = []
for i in list1:
if i not in list2:
list2.append(i)
print(list2)
3、使Python/C 上机解决以下题
1)
斐波那契数列1,2,3,5,8,13,21.....根据这样的规律,编程求出400万以内最⼤的斐波那契数,并求出他
是第几个斐波那契数。
①我的
x = 1
y = 2
n = 1
z = 0
while z <= 4000000:
print(z, n+1)
z = x+y
x = y
y = z
n += 1
## 答案: 3524578 32
②老师的:
count = 2
a,b = 1,2
while a+b < 4000000:
c = a+b
a = b
b = c
count += 1
print(c)
print(count)
2)
dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
要求写⼀段代码,实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保
留,如果是字符串就拼接,如上⽰例得到结果为:
dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}
========================================================
①我的
dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
dictc = {}
for i in dicta:
if i in dictb:
dicta[i] = dicta[i] + dictb[i]
# print(dicta)
dictb.update(dicta) # 有就覆盖,没有就添加
dictc = dictb
print(dictc)
②666的
dictc = dicta
for key in dictb:
if key in dictc:
dictc[key] = dictc[key]+dictb[key]
else:
dictc[key] = dictb[key]
print(dictc)
5、什么是装饰器?写个装饰器,可以打印输出法执时长的信息
①为了不修改原函数,却要增加原函数的功能,所以就出现了装饰器
②差不多吧,老师没讲
import time
def wrapper(func):
def inner(*args,**kwargs):
start = time.time()
print(start)
ret = func(*args,**kwargs)
time.sleep(1)
end = time.time()
print(end)
return ret
return inner
@wrapper
def func():
print('balabala')
func()
6、请写出log的实现(主要功能是打印函数名)
@log
def now():
print('2017-08-31')
>>>now()
输出:
call now():
201/7-08-31
====================================
def log(func):
def inner(*args,**kwargs):
ret = func(*args,**kwargs)
print('call',func.__name__,'()')
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'
result = {}
def select(data, fields):
fields_lst = fields.split('|')
for key in data:
简单答(不完全对):
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'
# result = {}
# def select(data, fields):
# fields_lst = fields.split('|')
# for key in data:
# if type(data[key]) == dict:
# for ke in data[key]:
# if ke in fields_lst:
# result[ke] = data[key][ke]
# else:
# if key in fields_lst:
# result[key] = data[key]
# return result
# print(select(data,fields))
6666的:
data = {"time": "2016-08-05T13:13:05",
"some_id": "ID1234",
"grp1": {"fld1": 1,"fld2": 2},
"xxx2": {"fld3": 0,"fld5": {'fld19':00}},
"fld6": 11,
"fld7": 7,
"fld46": 8}
fields = 'fld2|fld3|fld7|fld19'
def select(data,fields):
l = [data]
result = {}
fields_lst = fields.split('|')
while l:
data = l.pop()
for key in data:
if type(data[key]) == dict:
l.append(data[key])
elif key in fields_lst:
result[key] = data[key]
return result
print(select(data,fields))