2.写函数:
根据取值范围获取其中3和7整除的所有数的和,并返回调用者
方法一:
def func(start,end,a=0,b=0):
if start == end:
return a,b
if start%3 == 0 and start%7 == 0:
a +=1
b += start
ret = func(start+1,end,a,b)
return ret
ret = func(1,7)
方法2
def func(x, y):
n = [] # 个数
sum = 0 # 和
for i in range(x, y):
if i % 3 == 0 and i % 7 == 0:
sum+=i
n.append(i)
print(len(n))
print(sum)
func(1,100)
#结果 4,210
5、函数传递参数时,是引用还是复制值?并证明。
引用。(这题是问:对于一个函数来说,外面传入的值和里面使用的值的是不是一个内存地址)
验证过程:
name='hello'
def show():
print(id(name))
print(id(name))
show()
输出:
31182384
31182384
6、简述三元运算书写格式以及应用场景
变量 = 值一 if条件一 else 值二
ret = 1 if 1>0 else 5
7、简述lambda表达式书写格式以及应用场景
函数名 = lambda 形参:功能
不写函数名也可以 将简单的函数书写成匿名函数,减少代码
补充:
x=1是怎么在python中实现的?
先给1开一个内存地址,再给x开一个内存地址,x的区域中中存储了1的内存地址,所以x可以指向1
如果这时候写了一个x=2,会发生什么呢?
先开辟一块内存空间给“2”这个整数对象,x变量要指向2了(存的是2的内存地址),而“1”这个对象没有被引用了,对于没有被引用的对象,会被解释器在一段时间内刷掉,被刷掉之后,对象“1”就不存在了。
python是面向对象的语言,一切皆是对象,对象可以调用方法和属性;先有了“类”,才实例化出来对象
函数也是一个对象(一个功能强大的对象)
定义一个函数f。先开一块储存函数体的内容,然后开一块内存给函数名f(函数名就是一个变量),储存函数体的内存地址,使得f可以指向函数体的内容
匿名函数:执行一次就没了(省内存)
8、使用set集合获取两个列表l1 = [11,22,33] , l2 = [22,33,44]
提示:用&
l1 = [11,22,33]
l2 = [22,33,44]
print(set(l1)&set(l2))
输出;
{33, 22} 补充:想将列表里相同的元素去掉:用set处理
9、定义函数统计一个字符串中大写字母、小写字母、数字的个数,并以字典为结果返回给调用者
def func(x):
A=0
a=0
num=0
for i in x:
if i.isupper():
A+=1
elif i.islower():
a+=1
elif i.isdigit():
num+=1
return A,a,num
x='sefisehfi294723dASE'
cc=func(x)
print(cc)
#结果(3, 10, 6)
10、简述函数的位置参数、关键字参数、默认参数、可变长参数的特点以及注意事项
位置参数:按形参的位置传入,叫位置参数,就是普通参数(按照形参规定的位置去传值,规定是年龄就要传年龄)
关键字参数:传入实参时指定形参的值(不用考虑顺序,为了解决位置不固定的问题)
默认参数:形参直接指定默认值的参数(不用重复传值)
可变长参数:*args **kwargs,一个只能接受没有位置参数的实参或参数的列表,元组,俩可以接收关键字参数和字典形式
剩下的看连接
连接2