函数练习题一,选择题:1.python不支持的数据类型有 (A) A.char B.int C.float D.list2.x = 'foo' (E) y = 2 print(x + y) A.foo B.foofoo C.foo2 D.2 E.An exception is thrown3.关于字符串下列说法错误的是 (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.106.以下何者是不合法的布尔表达式: (B) A. x in range(6) B. 3 = a C. e > 5 and 4 == f D. (x - 6) > 57.下列表达式的值为True的是 (B) A. 5 + 4j > 2 - 3j B. 3 > 2 == 2 # 3 > 2 and 2 == 2 C. e > 5 and 4 == f D. (x - 6) > 58.已知 x = 43 ,ch = 'A' , y = 1 ,则表达式(x >= y and ch < 'b' and y)的值是 (B) A.0 B.1 C.出错 D.True9.下列表达式中返回为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 :pass11.若k为整数,下述while循环执行的次数为: (A) k = 1000 while k > 1: print k k = k / 2 A.9 B.10 C.11 D.10012.以下叙述正确的是: (B) A.continue语句的作用是结束整个循环的执行 B.只能在循环体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句13.关于Python中的复数,下列说法错误的是: (无解,四个选项都是对的) 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 : break15.下面的代码,哪些会输出 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.funcion<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 + 12.L = range(100) 1)取第一到第三个元素___ list(L[0:3]) 2)取倒数第二个元素___ 或者___ L[-2] or L[98] 3)取后十个元素___ list(L[-10:]) 4)把L复制给L1用___ L1 = list(L[:])3.判断dict有没有某种key用的方法是:____ in or get , 在这里面 in 最合法的4.获取list的元素个数,和向末尾追加元素的方法分别是____ ____ len() append()5.以下代码的输出将是什么 ____[10,'a']___[123]___[10,'a']__ 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('list2 = %s'%list2)6.下面程序的输出结果是:____yes______ x = True y = False z = False if x or y and x: print 'yes' else: print 'no'三,简答题: 1.如何判断一个变量是不是字符串 答:使用type()方法,如果print(type(变量))输出的结果是str说明就是字符串 2.is 和 == 的区别 答:is 比较的是内存地址 , ==比较的是值 3.Python里面如何实现tupele 和 list 的转换 答:数据类型的强制转换 4.list 和 tuple 有什么不同 答:tuple不可变 5.如何得到列表list的交集与差集 答: set(list) 交集:& 差集:- 6.Python中定义函数时如何书写可变参数和默认参数? 答:*args ,默认参数 7.*args 和 **kwargs 在什么情况下会使用到?请给出使用**kwargs的事例 答:不确定有多少个参数的时候,args是接收所有按照位置传参,kwargs是接收按照关键字传参 **kwargs的事例是装饰器 8.请描述unicode,utf-8,gbk等编码之间的关系? 答:unicode : 万国码 ,占内存 utf -8 gbk 国标码,中国制造,不兼容其他国家的语言 9.如何使用python删除一个文件 答:import os os.remove() 10.def func(a,b,*args ,c = 0 ,**kwargs): pass *args,**kwargs 的作用是什么? 答:args 接收多余的位置参数,kwargs 接收多余的关键字参数四,写代码: 1. d = {'a':1 ,'b':2 ,'c':3},请打印出 key,value键值对 d = {'a': 1, 'b': 2, 'c': 3} for i in d : print(i,d[i]) 2.请写出一段Python代码实现删除一个list里面的重复元素方法一: def remoc(l): if type(l) is set: return l else: l = set(l) return l ret = remoc([1,2,3,4,5,2,1]) print(ret)方法二: lisl = [1,2,3,4,5,2,1] new_l = [] for i in lisl : if i not in new_l: new_l.append(i) print(new_l) 3.使用Python上机解决以下题目 1)斐波那契数列 1,2,3,5,8,13,21.......根据这样的规律,编程求出400万以内最大的斐波那契数,并求出它是第几个斐波那契数 k = 1 j = 2 print(k,j,end='\t') sum = 0 for i in range(4000000)[3:]: if i == (k + j) : k = j j = i sum += 1 print(i,end='\t') print('\n') print('是第'+str(sum + 2)+'个斐波那契数列') 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'} dicl = {} for i in dicta: dicl[i] =dicta[i] for j in dictb: if i == j : dicl[i] = dicta[i] + dictb[j] for k in dictb: if k not in dicl: dicl[k] = dictb[k] print(dicl) 5.什么是装饰器?写一个装饰器,可以打印输出方法执行时长的信息 答: 不想修改函数的调用方式,同时还想扩展函数的功能,这个时候我们就需要给函数写一个装饰器 import time def wrapper(func): def inner(*args,**kwargs): start = time.time() func() print('父亲写的散文诗') end = time.time() min = end - start return min return inner @wrapper def func(): time.sleep(0.1) ret = func() print(ret) 6.请写出log的实现(主要功能是打印函数名) @log def now(): print'2017-08-31' >>>now() 输出: call now(): 2017-08-31 def log(f): def inner(*args,**kwargs): print('call',f.__name__,'():') f() 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}, 'grp2':{ 'fld3':0, 'fld5':0.4}, 'fld6':11, 'fld7':7, 'fld46':8 } fields : 由'|'连接的以'fld'开头的字符串,如:fld2|fld3|fld7|fld19 def select(data,fields): #TODO:implementation return result
来源:https://www.cnblogs.com/if-it-is-possible/p/11518995.html