py4测试题
1、8<<2等于?
322、通过内置函数计算5除以2的余数 divmod(5,2)3、s=[1,"h",2,"e",[1,2,3],"l",(4,5),"l",{1:"111"},"o"],将s中的5个字符提取出来并拼接成字符串。s[1]+s[3]+s[5]+s[7]+s[9]4、判断"yuan"是否在[123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"],如何判断以及对应结果?答 m=[123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"] n="yuan" for i in m: if i == n: print(i)输出结果为: 空值 5、l=[1,2,3] l2=l.insert(3,"hello") print(l2) 执行结果并解释为什么?答: 执行结果报错,因为列表下标是从0开始的,l列表的元素下标有0,1,2,没有下边为3的元素6、 a=[1,2,[3,"hello"],{"egon":"aigan"}] b=a[:]a[0]=5
a[2][0]=666print(a)
print(b) #计算结果以及为什么? [5,2,[666,"hello"],{"egon":"aigan"}] [1,2,[3,"hello"],{"egon":"aigan"}] 7 使用文件读取,找出文件中最长的行的长度(用一行代码解决)?print(max(len(line.strip())for line in f)) 8 def add(s, x): return s + x def generator(): for i in range(4): yield i base = generator() for n in [1, 11]: base = (add(i, n) for i in base) print list(base)9
hello.py (gbk方式保存): #coding:GBK print(“老男孩”)如果用py2,py3下在cmd下运行回报错吗?为什么并提出解决方案? (编码)
py2不会报错,因为Windows中cmd默认字符编码就是gbk py3中不会报错,因为Windows中cmd默认字符编码是gbk10 通过函数化编程实现5的阶乘from functools import reduceprint(reduce(lambda x,y:x*y,[1,2,3,4,5]))11 打印如下图案: * *** ***** ******* ***** *** *12
def outer(): count = 10 def inner(): count = 20 print(count) inner() print(count) outer()(1)分析运行结果?
20,10,这是一个嵌套函数,名称空间查找的顺序是:局部名称空间->全局名称空间->内置名称空间 (2)如何让两个打印都是20 把count的行去掉,然后把count = 20这一行放在def outer(): 这一行的上一行。理由是count的值都可以从全局找。13 输入一个年份,判断是否是闰年? year=int(input("请输入年份:")) if year % 4 == 0 and year % 400 == 0 and year % 100 != 0: print("输入的年份是闰年") else: print("输入的年份不是闰年")14 任意输入三个数,判断大小? a=1 i=[] while a<=3: j = int(input("请输入数字:")) i.append(j) a += 1 print(i) print(max(i)) 15 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222 ,几个数相加以及a的值由键盘控制。 a=int(input("请输入一个数字:")) def f(n): if n==1: return a elif n==2: return 10*a+a else: return f(n-1)+10**(n-1) if __name__ == "__main__": f=f(10) print(f)16 f=open("a")while 1:
choice=input("是否显示:[Y/N]:") if choice.upper()=="Y": for i in f: print(i) else: break请问程序有无bug,怎么解决?
答:有bug,f=open("a")改成如下代码 with open("a","r") as f: f.read()下面的代码不变17def foo():
print('hello foo') return() def bar(): print('hello bar') (1)为这些基础函数加一个装饰器,执行对应函数内容后,将当前时间写入一个文件做一个日志记录。import timedef timmer(func): def wrapper(): start_time=time.time() func() stop_time=time.time() m=print("The run time is %s",stop_time-start_time) with open("n.log", "a+") as f: f.write("The run time is %s" %(stop_time-start_time)) return wrapper@timmer
def foo(): print('hello foo') time.sleep(3) return()@timmerdef bar(): print('hello bar') time.sleep(3) (2)改成参数装饰器,即可以根据调用时传的参数决定是否记录时间,比如@logger(True)import timedef timmer(func): def wrapper(*args,**kwargs): start_time=time.time() func(*args,**kwargs) stop_time=time.time() m=print("The run time is %s",stop_time-start_time) with open("n.log", "a+") as f: f.write("The run time is %s" %(stop_time-start_time)) return wrapper@timmer
def foo(): print('hello foo') time.sleep(3) return()@timmerdef bar(): print('hello bar') time.sleep(3)18 三次登陆锁定:要求一个用户名密码输入密码错误次数超过三次锁定?i=0while i<3: name=input("请输入你的名字: ") password=input("请输入你的密码: ") if name=='bing'and password=='12345': print("bing login success,welcome bing") break else: print("用户名或密码错误!") i+=1while i>=3: print("已经被锁定") with open('./jilu.txt','w+') as f: f.write("name:"+name+'\n password:'+password)