1.写函数:
根据范围获取其中3和7整除的所有数的和,并返回调用者:
符合条件的数字个数以及符合条件的数字的总和,如:def func(start,end):
def func(start,end): count=0 s=0 for i in range(start,end): if i%3==0 and i%7==0: count+=1 s+=i print(i) return s,count print(func(0,100))
2.函数传递参数时,是引用还是复制值,并证明
引用
def test(a): print(id(a)) b=1 print(id(b)) test(b)
3.简述三元运算的书写格式以及应用场景
变量=值1 if 条件1 else 值2
将简单的条件判断精简写
4.简述lambda表达式书写格式以及应用场景
函数名=lambda 形参:功能 不写函数名也可以
5.使用set集合获取两个列表l1=[11,22,33],l2=[22,33,44]中相同的元素集合
l1=[11,22,33] l2=[22,33,44] set(l1)&set(l2)
6.定义函数统计一个字符串中大写字母、小写字母、数字的个数,并以字典为结果返回
提示:可以用id进行判断
d={'Al':0,'low':0,'num':0} def tongji(s): for i in s : if i.isupper(): d.update(Al=d.get('Al')+1) elif i.islower(): d.update(low=d.get('low') + 1) elif i.isnumeric(): d.update(num=d.get('num')+1) return d t=tongji('Manuel123') print(t)
7.简述函数的位置参数、关键字参数、默认参数、可变长参数的特点以及注意事项
位置参数:按形参的位置传入的参数叫位置参数,即普通参数
关键字参数:传入实参时指定形参的值
默认参数:形参直接指定默认值的参数
可变长参数:*args,**kwargs,一个*只能接收没有位置参数的实参或传入的列表、元组,两个*可以接收关键字参数和字典格式
8.检查代码,如有错误请改正:
a.
def func(x,y,z):
print(x,y,z)
func(1,2,3)
>>>1,2,3
b.
def func(x,z,y=5)
print(x,y,z)
func(1,3,3)
>>>1,3,3
c.
def func(x,y,*z):
print(x,y,z)
func(1,2,3,4,5,6)
>>>1,2,(3,4,5,6,)
d.
def func(x,y,*z):
print(x,y,z)
func(1,2,3,4,5,6,6)
>>>1,2,(3,4,5,6,6,)
e.
def func(x,*z,**y):
print(x,y,z)
func(1,2,3)
>>>1,(2,3,)
f.
def func(x,*y,**z):
print(x,y,z)
func(1,name=2,age=3)
>>>1,(),{'name':2,'age':3}
g.
def func(x=2,*y,**z):
pirnt(x,y,z)
func(name=2,age=3)
>>>2,(),{'name':2,'age':3}
h.
def func(*y,**z):
print(y,z)
func([1,2,3,4,5])
>>>([1,2,3,4,5],){}
i.
def func(*y,**z):
print()
func(*[1,2,3,4,5])
>>>(1,2,3,4,5,){}
j.
def func(*y,**z):
print(y,z)
func(*[1,2,3,4,5],name='alex',age=19)
>>>(1,2,3,4,5,){'name':'alex','age':19}
k.
def func(*y,**z):
pirnt(y,z)
func(*[1,2,3,4,5],{'name':'alex','age':19})
>>>(1,2,3,4,5,{'name':'alex','age':19}){}
l.
def func(*y,**z):
pirnt(y,z)
func(*[1,2,3,4,5],**{'name':'alex','age':19})
>>>(1,2,3,4,5,){'name':'alex','age':19}
m.
b='oldboy%d%%'%(12,)
print(b)
>>>oldboy12%
9.简述对象和类的关系
如果值是某类型,那这个值就是这个类的对象
10.内置函数all和any的区别
all如果为空,则为真,如果非空,全真则为真
any有一个为真则为真
11.简述文件打开模式‘r’和‘rb’的区别
‘r’:只读模式,解码方式默认为‘utf-8’
‘rb’:以二进制方式读文件,通常处理非txt文件
12.将‘老男人’转换成utf-8编码的字节类型
a='老男人' b=a.encode('utf8') c=bytes(a,'utf8') print(b) print(c)
13.利用内置函数zip,实现功能
l1=['alex',1,2,3,4],l2=['is',1,2,3],l3=['sb',2,5,6]
获取字符串s='alex_is_sb'
l1=['alex',1,2,3,4] l2=['is',1,2,3] l3=['sb',2,5,6] s=zip(l1,l2,l3) a='_'.join(list(s)[0]) print(a)
14.检查代码,写出运行结果
a.
name='alex' def outer(func): name='bili' func() def show(): print(name)#这里的name是全局的name,不是outer里面的name outer(show)
>>>alex
b.
name='alex' def outer(): name='bili' def inner(): print(name)#这里的name是outer里的name,不是全局name return inner() ret=outer() print(ret)
>>>bili
None
c.
name='alex' def outer(): name='bili' def inner(): print(name) return inner ret=outer() ret() print(ret) result=ret() print(result)
>>>bili
inner内存地址
bili
None
d.
def outer(func,z,y): func(z) def show(x): return x*x ret=outer(show,9,23) print(ret)
>>>None
e.定义函数 实现阶乘
def func(n): res=1 for i in range(n,1,-1): res=res*i return res print(func(8))
#方法二:递归 def func(n): if n==1: return 1 return n*func(n-1) print(func(8))
#方法三: from functools import reduce print(reduce(lambda x,y:x*y,range(1,5)))
15.写程序:利用with实现同时打开两个文件(一写,一读,并将读取的内容写入到写入模式的文件中)
with open('a','r') as x,open('b','w')as y: y.write(x.read())