一、选择题(32分) 1、python不支持的数据类型有 A A、char # 字符 , 只有在 c 语言有,在python是字符串 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语言 C、既可以用单引号,也可以用双引号创建字符串 D、在三引号字符串中可以包含换行回车等特殊字符 4、以下不能创建一个字典的语句是 C A、dic1 = {} B、dic2 = {123:345} C、dic3 = {[1,2,3]:'uestc'} # key :不可变,列表是可变的 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) # 1 in range (4) B.3=a # 赋值不是布尔值,但是 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 ascll a字母都是65到100之间 A、0 B、1 True and 1 --> 1 C、出错 D、True 9、下列表达式中返回 为True的是: c A、3>2>2 B、’abc’>’xyz’ C、0x56 > 56 0x56是16进制 D、(3,2)>(‘a’,’b’) # int 与 str 不能比较 元组 比较的是()里第一个数 10、下列Python语句正确的事(多选) AD A、min = x if x < y else y B、max = x > y ? x : y # 在c语言有 C、if(x>y) print(x) D、while True:pass 11.若k为整形,下述while循环执⾏的次数为: A k=1000 while k>1: print k # 看到这个是python 2 k=k/2 A.9 # py2 B.10 # py 3 C.11 D.100 12、以下叙述正确的是: B A、continue语句的作用是结束整个循环的执行 # 结束本次 B、只能在循环体内使用break语句 C、在循环体内使用break语句或continue语句的作用相同 D、从多层循环嵌套中退出时,只能使用goto语句 # goto在c语言,python没有 13、关于python中的复数,下列说法错误的是 B A、表示复数的语法是real+image j B、实部和虚部都是浮点数 C、虚部必须后缀j且j不区分大小写 D、方法conjugate返回复数的共轭复数 # 2+3j 2-3j 14、下面的语句哪个会无限循环下去: B A、for a in range(10): # for 循环是有限的 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: # 0,1,2 print(i+1) # 1,2,3, C、i = 1 while i < 3: print(i) i+=1 D、for i in range(3): print(i+1) 16、Python如何定义一个函数: C A、class( arg1, arg2,… argN) B、function (arg1,arg2,…argN) C、def (arg1,arg2,…argN) python是弱类型语言 D、def ( arg1, arg2,… argN) # type 是类型 二、填空题(10分) 1、以下函数需要在其中饮用一个全局变量k,请填写语句: def fun() ___globals k___ k = k+1 2、L=range(100) # range 是迭代器 1) 取第一到第三个元素_____L[0:3] ----> list(L[:3])# 转list节省内存 2) 取倒数第二个元素_______L[-2] 3) 取后十个元素_______L[-10:] ---> list([-10:]) 4) 把L复制给L1用_______L1 = L.copy() L1 =L (这是赋值) 3、判断dict有没有某个key用的方法是_______key in dict get() 4、获取list的元素个数,和向末尾追加元素的方法分别是____len(list)__ ____list.append()___
5.以下的代码的输出将是什么: _______ def extendList(val,list=[]): list.append(val) return list list1 = extendList(10) list2 = extendList(123,[]) # 用的不是list的列表 list3 = extendList('a') print 'list1 = %s'%list1 [10,'a'] print 'list2 = %s'%list2 [123] print 'list3 = %s'%list3 [10,'a']
6.下⾯程序的输出结果是:___yes____ x=True y=False z=False if x or y and x: print "yes" else: print "no" 三、简答题(20分) 1、如何判断一个变量是不是字符串 内存地址相同,值一定相同 type(a)is str 2、is 和 == 的区别 is 比较的是内存地址 == 比较的是值 3、Python⾥⾯如何实现tuple和list的转换。 tuple() list() 4、list和tuple有什么不同 list是可变的数据类型 tuple是不可变的数据类型
5、如何得到列表list的交集与差集。 先转换成集合set() 用difference()求差集,利用intersection()求交集 or 先转换集合 s&b a-b
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2) # {4, 5}
print(set1.intersection(set2)) # {4, 5}
set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 - set2) # {1,2,3} print{set1.difference(set2)} # {1,2,3} 6、Python中定义函数时如何书写可变参数和默认参数? *args,key=1,**kwargs(顺序) 7、*args和**kwargs在什么情况下会使⽤到?请给出使⽤**kwargs的事例 在函数传参不确定的时候,*args接收所有位置传参,**kwargs 接收所有按关键字传参比如装饰器 def timer(func): def inner(*args,**kwargs): print('茶卡盐湖') ret = func(*args,**kwargs) print('拉布达衲') return ret return inner @timer def li2(): print('天空之境') li2() 8、请描述unicode,utf-8,gbk等编码之间的关系? unicode 万国码,任何一个字符==四个字节 utf-8 万国码的升级版 一个中文字符==三个字节 英文是一个字节 欧洲的是 2个字节 gbk 国内版本 一个中文字符==2个字节 英文是一个字节 gbk 转 utf-8 需通过媒介 unicode 9、如何使用python删除一个文件 import os os remove(‘文件路径’) 10、def func(a,b,c=0,*args,**kwargs): # c=0与*args需换位置 pass *args,**kwargs的作用是什么? *args接收所有位置传参,**kwargs 接收所有按关键字传参 四、写代码(38分) 1、d={‘a’:1,’b’:2,’c’:3}请打印出key、value对(3分) d={'a':1,'b':2,'c':3} for k in d: print(k,d[k]) # 2、请写出⼀段Python代码实现删除⼀个list⾥⾯的重复元素。(6分)#字典放不了集合 li = [1,2,2,2,2,3,4,55,55] set1 = set(li) li = list(set1) print(li) new_l= [] for i in li: if i not in new_l: new_l.append(i) print new_l 3、使⽤Python/C 上机解决以下题⽬(13分) 1) 斐波那契数列1,2,3,5,8,13,21.....根据这样的规律,编程求出400万以内最⼤的斐波那契数,并求出他 是第⼏个斐波那契数。 count = 2 a,b = 1,2 while a+b < 4000000: c = a+b a = b b = c count += 1 print(c) #3524578 print(count) # 32 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 = dicta for key in dictb: if key in dictc: dictc[key] = dictc[key] + dictb[key] # [key] 索引他的值 else: dictc[key] = dictb[key] print(dictc) 5、什么是装饰器?写⼀个装饰器,可以打印输出⽅法执⾏时长的信息(8分) 装饰器:在不改变函数的情况下,在函数前后面添加功能 import time def timer(func): def inner(*args,**kwargs): start = time.time() ret = func(*args,**kwargs) end = time.time() print('我会对你说一世情话') print(end-start) return ret return inner @timer def list(): print('如果全世界都对你恶语相加') list() 6、请写出log的实现(主要功能是打印函数名)(8分) @log def now(): print ‘2017-08-31’ >>>now() 输出: def log(func): def inner(*args, **kwargs): print('call %s()' % func.__name__) ret = func(*args, **kwargs) return ret return inner @log def now(): print('2017-08-31')now()
附加题(20分) 有⼀个数据结构如下所⽰,请编写⼀个函数从该结构数据中返回由指定的字段和对应的值组成的字 典。如果指定字段不存在,则跳过该字段。(10分) data:{"time":"2016-08-05 T13:13:05", "some_id": "ID1234", "grp1":{ "fld1":1, "fld2":2}, "xxx2":{ "fld3":0, "fld5":0.4}, "fld6":11, "fld7":7, "fld46":8} fields:由"|"连接的以"fld"开头的字符串,如:fld2|fld3|fld7|fld19 splir def select(data,fields): # TODO:implementation return result def select(data,fields): fields_lst = fields.split(‘|’) for key in data: if type(data[key]) == dict: pass return result data={"time":"2016-08-05T13:13:05", "some_id":"ID1234", "grp1":{ "fld1":1,"fld2":2}, "xxx2":{ "fld3":0,"fld5":0.4}, "fld6":{"key":{ "fld19":1}}, "fld7":7, "fld46":8} fields='fld2|fld3|fld7|fld19' #计算机思想:压栈,Alex def select(data,fields): l = [data] field_lst = fields.split('|') result = {} while l: # l = [] data = l.pop() #data = { "fld1":1,"fld2":2} for key in data: if type(data[key]) == dict: l.append(data[key]) # l = [{ "fld1":1,"fld2":2},{ "fld3":0,"fld5":0.4},{"key":{ "fld19":1}}] elif key in field_lst: result[key] = data[key] return result print(select(data,fields))