Python的生成器4-习题

在这里插入图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值