py4测试题
1、8<<2等于?
32
2、通过内置函数计算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]=666
print(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默认字符编码是gbk
10 通过函数化编程实现5的阶乘
from functools import reduce
print(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()
下面的代码不变
17
def foo():
print('hello foo')
return()
def bar():
print('hello bar')
(1)为这些基础函数加一个装饰器,执行对应函数内容后,将当前时间写入一个文件做一个日志记录。
import time
def 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()
@timmer
def bar():
print('hello bar')
time.sleep(3)
(2)改成参数装饰器,即可以根据调用时传的参数决定是否记录时间,比如@logger(True)
import time
def 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()
@timmer
def bar():
print('hello bar')
time.sleep(3)
18 三次登陆锁定:要求一个用户名密码输入密码错误次数超过三次锁定?
i=0
while i<3:
name=input("请输入你的名字: ")
password=input("请输入你的密码: ")
if name=='bing'and password=='12345':
print("bing login success,welcome bing")
break
else:
print("用户名或密码错误!")
i+=1
while i>=3:
print("已经被锁定")
with open('./jilu.txt','w+') as f:
f.write("name:"+name+'\n password:'+password)