一次小的上机试题
1、8<<2等于 #32
2、通过内置函数计算5除以2的余数
print(divmod(5,2)[1]) #(2, 1)
3、s=[1,"h",2,"e",[1,2,3],"l",(4,5),"l",{1:"111"},"o"],将s中的5个字符提取出来并拼接成字符串。
#1.观察法
s=[1,"h",2,"e",[1,2,3],"l",(4,5),"l",{1:"111"},"o"]
print("".join(s[1::2]))#hello
#.法二
tlist = []
for i in s:
# if type(i) == str:
if isinstance(i,str):
tlist.append(i)
s1 = ''.join(tlist)
print(s1)
4、判断"yuan"是否在[123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"],如何判断以及对应结果?
#法一.
lst1 = [123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"]
for i in range(len(lst1)):
if lst1[i] == 'yuan':
print(lst1[i])
elif isinstance(lst1[i],tuple ):
print(lst1[i])
elif isinstance(lst1[i], str):
print(lst1[i])
elif isinstance(lst1[i], dict):
print(lst1[i])
#法二
lst1 = [123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"]
for i in range(len(lst1)):
if str(lst1[i]).find('yuan') != -1:
print(lst1[i]) # (1, 'yuan') {'yuan': 'handsome'} yuanhao
5、l=[1,2,3]
l2=l.insert(3,"hello")
print(l2)
执行结果并解释为什么?
l=[1,2,3]
l2 = l.insert(3,"hello")
print(l2) #None 因为insert这个函数没有返回值,所以输出是None
# 6、 a = [1, 2, [3, "hello"], {"egon": "aigan"}] b = a[:] a[0] = 5 a[2][0] = 666 print(a) #[5, 2, [666, 'hello'], {'egon': 'aigan'}], # 首先b= a[:] 创建一个新的列表,\ # 修改a[0]=5,因为5是一个不可变数据类型,会重新创建一个新内存地址,并把值引用赋给a[0],所以a[0]=5 由原来1变成5. # print(b) #[1, 2, [666, 'hello'], {'egon': 'aigan'}] #首先b= a[:] 创建一个新的列表, 但是,元素如果嵌套有超过一层,那么它复制只是复制引用地址,里面值它不管的,也就是说 # 新列表的b里的b[2][0], 跟a[2][0] 是共享一个内存地址,,而a[2][0] = 666变了,那么b[2][0] =666. # 计算结果以及为什么?
7 使用文件读取,找出文件中最长的行的长度(用一行代码解决)?
with open('a.txt','r') as f:print(len(max(f.__iter__())))
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)) #[22, 23, 24, 25]
9
hello.py(gbk方式保存):
#coding:GBK
print(“老男孩”)
如果用py2,py3下在cmd下运行回报错吗?为什么并提出解决方案? (编码)
#coding:GBK
print("老男孩")
# 都不报错,cmd 默认就是Gbk编码,此文件开头已经声明gbk编码方式unicode,编码也是gbk编码方式与cmd一样
10 # 通过函数化编程实现5的阶乘 # n!=n*(n-1)! 阶乘的计算方法 阶乘指从1乘以2乘以3乘以4 24
def gat(n):
ps = n
for i in range(1,n):
ps *= i
print(ps)
gat(5)
11 # 打印如下图案:
*
***
*****
*******
*****
***
*
str1 = " "
str2 = "*"
for i in range(1,8,2):
s = (7-i)//2
print(str1*s,i*str2,s*str1)
for i in reversed(range(1,6,2)):
s = (7 - i) // 2
print(str1 * s,i * str2, s * str1 )
12.
def outer(): count = 10 def inner(): count = 20 print(count) inner() print(count) outer() # 20 # 10
# 当调用 outer(),先是程序执行outer 定义的函数体,里面嵌套有一个inner方法
# 当count=20,outer函数里调用一个的inner(),inner被 调用 时,内部有一个变量count=20,,
# 当inner 内的print count,优先找到它自己内字义的count=20,所以第一闪打印20,内部的inner被执行完
# 接着跑outer函数定义体的print(count),此时作用就优先找 它自己定义 的count=10.所以结果 为10
(1)分析运行结果?
(2)如何让两个打印都是20
def outer(count = 20):
count = 10
def inner():
count = 20
print(count)
inner()
return inner()
outer()
#20
#20
13 # 输入一个年份,判断是否是闰年?
p = int(input('inpu year'))
if p % 4 == 0 and (p % 100 != 0 ):
print('%s 年是闰年'%p)
elif (p % 400 == 0):
print('%s 年是闰年'%p)
else:
print('%s 年不是闰年'%p)
14.任意输入三个数,判断大小?
def max_d(x,y,z):
def wapper():
p = max(x,y)
p = max(p,z)
return p
return wapper()
print(max_d(23,32,9))
print(max_d(923,332,9)
15 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222 # ,几个数相加以及a的值由键盘控制。
while 1:
p = int(input('input num'))
p_count = int(input('input count'))
def func_re():
res = p
for i in range(1,p_count):
res += int((i+1)*str(p))
print(res)
func_re()
16# 请问程序有无bug,怎么解决?
f=open("a.txt") while 1: choice=input("是否显示:[Y/N]:") if choice.upper()=="Y": for i in f: print(i) else: break
# 有bug #添加 f.seek(0)
修改后如下
f = open("a.txt")
while 1:
choice = input("是否显示:[Y/N]:")
if choice.upper() == "Y":
for i in f:
print(i)
f.seek(0) #每次读取好,游标记它到开始处
else:
break
# 17
def foo():
print('hello foo')
return()
def bar():
print('hello bar')
(1) 为这些基础函数加一个装饰器,执行对应函数内容后,将当前时间写入一个文件做一个日志记录。
import time def timer(func): def wapper(*args,**kwargs): f = open('a.log','a+') res = func(*args,**kwargs) f.write(str(time.time())+"\n") return res return wapper @timer def foo(): print('hello foo') return() @timer def bar(): print('hello bar') foo() bar()
(2) 改成参数装饰器,即可以根据调用时传的参数决定是否记录时间,比如@logger(True)
#有参数
import time
def loger(l_type):
def timer(func):
def wapper(*args,**kwargs):
f = open('a.log','a+')
res = func(*args,**kwargs)
if l_type == True:
f.write(str(time.time())+"\n")
return res
else:
pass
return wapper
return timer
@loger(True)
def foo():
print('hello foo')
return()
@loger(True)
def bar():
print('hello bar')
foo()
bar()