第三次作业
1、列举布尔值为False的值
0、False、""、[]、()、{}、None
2、写函数
1 # 根据用户输入的开始值和结束值,计算出范围内,3和7都能整除的数有几个,加起来和是多少,如def func(start, end): 2 3 # def func(strat, end , a = 0, b = 0): 4 # if strat == end: 5 # return a, b 6 # if strat%3 == 0 and strat%7 == 0: 7 # a += 1 8 # b += strat 9 # ret = func(strat + 1, end, a, b) 10 # return ret 11 # 12 # ret = func(1, 22) 13 # print(ret)
3、函数的默认返回值
1 None
4、简述break、continue、return、的区别
# break:结束当前循环 # continue:结束本次循环进入下一次循环 # return:结束函数,并返回结果,默认返回None
5、函数传递参数时,是引用还是复制值?并证明
1 # 引用 2 # name = "hairui" 3 # def show(): 4 # print(id(name)) 5 # print(id(name)) 6 # show()
6、简述三元运算书写格式以及应用场景
1 # 变量 = 值一 if 条件一 else 值二 2 # 将简单的条件判断精简写
7、简述lambda表达式书写格式以及应用场景
1 # 函数名 = lambda 形参:功能 不写函数名也可以 2 # 将简单的函数书写成匿名函数,减少代码
8、set集合
使用set集合获取两个列表l1 = [11, 22, 33], l2 = [22, 33, 44]中相同的元素的集合
1 # l1 = [11, 22, 33] 2 # l2 = [22, 33, 44] 3 # a = set(l1) & set(l2) 4 # print(a)
9、写函数
定义函数统计一个字符串中大写字母、小写字母、数字的个数、并以字典为结果返回给调用者
1 # 第一种方法:比大小 2 # def func(x): 3 # daxie = 0 4 # xiaoxie = 0 5 # num = 0 6 # for i in x: 7 # if i >= "A" and i <= "Z": 8 # daxie += 1 9 # if i >= "a" and i <= "z": 10 # xiaoxie += 1 11 # if str(i).isdigit(): 12 # num += 1 13 # return {"大写字母个数":daxie, "小写字母个数":xiaoxie, "数字个数":num} 14 # a = func("QWsWd2") 15 # print(a) 16 17 # 第二种方法:字符串方法 18 # def func(x): 19 # daxie = 0 20 # xiaoxie = 0 21 # num = 0 22 # for i in x: 23 # if i.isupper(): 24 # daxie += 1 25 # if i.islower(): 26 # xiaoxie += 1 27 # if str(i).isdigit(): 28 # num += 1 29 # return {"大写字母个数":daxie, "小写字母个数":xiaoxie, "数字个数":num} 30 # a = func("WQFsdsa4546") 31 # print(a)
10、简述函数的位置参数、关键字参数、默认参数、可变长参数的特点以及注意事项
1 # 位置参数:按形参的位置传入,称为位置参数,也就是普通参数 2 # 关键字参数:形参直接指定默认值的参数 3 # 默认参数:形参直接指定默认值的参数 4 # 可变长参数:*args **kwargs,一个只能接收没有位置性质的实参或参入的列表,元组,第二个可以接收关键字参数和字典格式
11、检查代码,如有错误请改正(禁止运行代码)
1 # a. 2 # def func(x, y, z): 3 # print(x, y, z) 4 # func(1, 2, 3) 5 # --> 1 2 3 6 7 # b. 8 # def func(x, z, y = 5): 9 # print(x, y, z) 10 # func(1, 3, 3) 11 # --> 1 3 3 12 13 # c. 14 # def func(x, y, *z): 15 # print(x, y, z) 16 # func(1, 2, 3, 4, 5, 6) 17 # --> 1 2 (3, 4, 5, 6) 18 19 # d. 20 # def func(x, y, *z): 21 # print(x, y, z) 22 # func(1, 2, 3, 4, 5, 6, 6) 23 # --> 1 2 (3, 4, 5, 6, 6) 24 25 # e. 26 # def func(x, *z, **y): 27 # print(x, y, z) 28 # func(1, 2, 3) 29 # --> 1 {} (2, 3) 30 31 # f. 32 # def func(x, *y, **z): 33 # print(x, y, z) 34 # func(1, name = 2, age = 3) 35 # --> 1 () {'name': 2, 'age': 3} 36 37 # g. 38 # def func(x, *y, **z): 39 # print(x, y, z) 40 # func(1, 2, 3, 4, name = 2, age = 3) 41 # --> 1 (2, 3, 4) {'name': 2, 'age': 3} 42 43 # h. 44 # def func(x = 2, *y, **z): 45 # print(x, y, z) 46 # func(name = 2, age = 3) 47 # --> 2 () {'name': 2, 'age': 3}
12、书写输出结果(进制运行代码)
1 # a. 2 # def func(*y, **z): 3 # print(y, z) 4 # func(1, 2, 3, 4, 5) 5 # --> (1, 2, 3, 4, 5) {} 6 7 # b. 8 # def func(*y, **z): 9 # print(y, z) 10 # func([1, 2, 3, 4, 5]) 11 # --> ([1, 2, 3, 4, 5],) {} 12 13 # c. 14 # def func(*y ,**z): 15 # print(y, z) 16 # func(*[1, 2, 3, 4, 5]) 17 # --> (1, 2, 3, 4, 5) {} 18 19 # d. 20 # def func(*y, **z): 21 # print(y, z) 22 # func(*[1, 2, 3, 4, 5], name = "albert", age = 19) 23 # --> (1, 2, 3, 4, 5) {'name': 'albert', 'age': 19} 24 25 # e. 26 # def func(*y, **z): 27 # print(y, z) 28 # func(*[1, 2, 3, 4, 5], {"name":"albert", "age":19}) 29 # --> (1, 2, 3, 4, 5, {'name': 'albert', 'age': 19}) {} 30 31 # f. 32 # def func(*y, **z): 33 # print(y, z) 34 # func(*[1, 2, 3, 4, 5],**{"name":"albert", "age":19}) 35 # --> (1, 2, 3, 4, 5) {'name': 'albert', 'age': 19}
13、书写执行结果(禁止运行代码)
1 # def func1(x = 1, *y, **z): 2 # print(x, y, z) 3 # return y 4 # print(x) 5 # def func2(arg): 6 # ret = func1(name = arg) 7 # print(ret) 8 # result = func2("fuck") 9 # print(result) 10 # --> 11 # 1 () {'name': 'fuck'} 12 # () 13 # None
14、书写执行结果(禁止运行代码)
1 # def func(arg): 2 # arg.append(55) 3 # li = [11, 22, 33,44] 4 # func(li) 5 # print(li) 6 # li = func(li) 7 # print(li) 8 # --> 9 # [11, 22, 33, 44, 55] 10 # None
15、书写执行结果(禁止运行代码)
1 # def f1(arg): 2 # print(arg + 100) 3 # def f2(arg): 4 # ret = f1(arg + 1) 5 # print(arg) 6 # print(ret) 7 # ret = f2(7) 8 # print(ret) 9 # --> 10 # 108 11 # 7 12 # None 13 # None
16、书写执行结果(禁止运行代码)
1 # a = "albert%" 2 # print(a) 3 # -->albert%' 4 # b = "albert%d%%"%(12,) 5 # print(b) 6 # -->lbert12%
17、简述Python3中的range函数和Python2.7中的range函数有什么区别
1 # 3.x中:range不会生成值,只有用的时候才会生成 2 # 2.7中:range会直接生成一个列表,值已经生成
18、书写执行结果(禁止运行代码)
1 # def func(a1): 2 # return a1 + 100 3 # func = lambda a1:a1 + 200 4 # ret = func(10) 5 # print(ret) 6 # --> 210
19、内置函数all和any的区别
1 # all:如果是空的,返回True,如果非空,全真为真,否则为假 2 # any:有一个为真就为真
20、简述文件打开模式"r"和"rb"的区别
1 # r是只读模式打开,默认为utf8格式 2 # rb是以二进制格式打开
21、将字符串“艾伯特”转换成utf8编码的字节类型
1 # a1 = "艾伯特" 2 # 第一种方法 3 # a2 = bytes(a1,encoding="utf8") 4 # print(a2) 5 # 第二种方法 6 # a3 = a1.encode("utf8") 7 # print(a3)
22、简述内置函数globals()、locals()作用
1 # globals()获取所有的全局变量 2 # locals()获取所有的局部变量
23、利用内置函数zip(),实现功能
1 # l1 = ["albert", 11, 22, 33, 44] l2 = ["is", 66, 22, 33, 22] 2 # l3 = ["good", 22, 22, 33, 99] l4 = ["guy", 11, 22, 00, 44] 3 # 请获取字符串s = "albert_is_good_guy" 4 5 # l1 = ["albert", 11, 22, 33, 44] 6 # l2 = ["is", 66, 22, 33, 22] 7 # l3 = ["good", 22, 22, 33, 99] 8 # l4 = ["guy", 11, 22, 00, 44] 9 # a = zip(l1, l2, l3, l4) 10 # b = list(a) 11 # s = "_".join(b[0]) 12 # print(s)
24、判断输出结果是否相同?并可得到什么结论?
1 # def f1(arg): 2 # print(id(arg)) 3 # n = 111111 4 # print(id(n)) 5 # f1(n) 6 # 输出的两个值是否为一个内存地址:是的 7 # 执行函数是调用变量值不是复制
25、书写执行结果(禁止运行代码)
1 # a. 2 # namelist = ["albert", "eris"] 3 # def func(): 4 # namelist = 123 5 # func() 6 # print(namelist) 7 # --> ['albert', 'eris'] 8 9 # b. 10 # namelist = ["albert", "eris"] 11 # def func(): 12 # global namelist 13 # namelist = 123 14 # func() 15 # print(namelist) 16 # --> 123 17 18 # c. 19 # namelist = ["albert", "eris"] 20 # def func(): 21 # namelist.append("seven") 22 # func() 23 # print(namelist) 24 # --> ['albert', 'eris', 'seven'] 25 26 # d. 27 # namelist = ["albert", "eris"] 28 # def func(): 29 # namelist = 123 30 # global namelist 31 # func() 32 # print(namelist) 33 # --> 不是报错,而是警告
26、书写执行结果(禁止运行代码)
1 # a. 2 # name = "root" 3 # def func(): 4 # name = "seven" 5 # def outer(): 6 # name = "eric" 7 # def inner(): 8 # global name 9 # name = "蒙比了吧..." 10 # print(name) 11 # print(name) 12 # ret = func() 13 # print(ret) 14 # print(name) 15 # --> 16 # seven 17 # None 18 # root 19 20 # b. 21 # name = "root" 22 # def func(): 23 # name = "seven" 24 # def outer(): 25 # name = "eric" 26 # def inner(): 27 # global name 28 # name = "蒙比了吧..." 29 # print(name) 30 # o = outer() 31 # print(o) 32 # print(name) 33 # ret = func() 34 # print(ret) 35 # print(name) 36 # --> 37 # eric 38 # None 39 # seven 40 # None 41 # root
27、书写执行结果并解释每一步操作
1 # a. 2 # name = "albert" 3 # def outer(func): 4 # name = "seven" 5 # func() # 此步就是执行的show() 6 # def show(): 7 # print(name) # 打印的是全局变量 8 # outer(show) # 传入参数show 9 # --> albert 10 11 # b. 12 # name = "albert" 13 # def outer(): 14 # name = "eris" 15 # def inner(): 16 # print(name) 17 # return inner() # 注意这个inner() 执行完了之后才能return 18 # ret = outer() 19 # print(ret) 20 # --> 21 # eris 22 # None 23 24 # c. 25 # name = "albert" 26 # def outer(): 27 # name = "eric" 28 # def inner(): 29 # print(name) 30 # return inner 31 # ret = outer() 32 # result = ret() 33 # print(result) 34 # --> 35 # eris 36 # None
28、书写执行结果并解释每一步操作
1 # def outer(func, z, y): 2 # func(z) 3 # def show(x): 4 # return x * x 5 # ret = outer(show, 9, 23) # outer()没有返回值,默认为None 6 # print(ret) 7 # --> 8 # None
29、利用递归实现a的功能
1 # a. 2 # def f5(arg): 3 # arg = arg + 5 4 # return arg 5 # def f4(arg): 6 # arg = arg + 4 7 # f5(arg) 8 # arg = arg + 4 9 # return arg 10 # def f3(arg): 11 # arg = arg + 3 12 # f4(arg) 13 # arg = arg + 3 14 # return arg 15 # def f2(arg): 16 # arg = arg + 2 17 # f3(arg) 18 # arg = arg + 2 19 # return arg 20 # def f1(arg): 21 # arg = arg + 1 22 # f2(arg) 23 # arg = arg + 1 24 # return arg 25 # num = 1 26 # result = f1(num) 27 # print(num) 28 # print(result) 29 30 # 递归写法 31 # b. 32 # def func(x, y = 0): 33 # y += 1 34 # if y == 5: 35 # return x + y 36 # x += y 37 # func(x, y) 38 # x += y 39 # return x 40 # num = 1 41 # result = func(num) 42 # print(num) 43 # print(result)
30、利用递归实现 1*2*3*4*5*6*7 = 5040
1 # 第一种 2 # def func(x, y = 1): 3 # if x == 1: 4 # return y 5 # y = y * x 6 # x -= 1 7 # ret = func(x, y) 8 # return ret 9 # ret = func(7) 10 # print(ret) 11 # --> 5040 12 13 # 第二种 14 # def func(x, y = 1): 15 # if x == 8: 16 # return y 17 # y = y * x 18 # x += 1 19 # ret = func(x, y) 20 # return ret 21 # ret = func(1) 22 # print(ret) 23 # --> 5040 24 25 # 第三种 26 # reduce + lambda 写法 27 # from functools import reduce 28 # print(reduce(lambda x,y:x*y, [x for x in range(1, 8)])) 29 # --> 5040 30 31 # 第四种 32 # def f(n): 33 # if n == 1: 34 # return 1 35 # return n*f(n-1) # 7*f(6) 6*f(5) 5*f(4) 4*f(3) 3*f(2) 2*f(1) 36 # 37 # print(f(7))
31、写程序
1 # a.文件操作时with的作用? 2 # with 打开文件执行完毕后自动关闭 3 # b.写程序:利用with实现同时打开两个文件(一读,一写,并将读取的内容写入到写入模式的文件中) 4 # with open("a","r") as x, open("b", "w") as y: 5 # y.write(x.read())
32、猴子吃桃
1 # 猴子第一天摘下若干桃子,当天吃了一半,感觉不过瘾就多吃列一个,第二天早上又将剩下的桃子吃了一半, 2 # 还是不过瘾又多吃了一个,以后每天都吃前一天剩下的一半再加一个,到第10天刚好剩一个,第10天还没吃呢 3 # 问猴子第一天摘了多少桃子? 4 # 第一种方法 5 # s = 1 6 # func = lambda x:(x+1)*2 7 # for i in range(0, 9): 8 # s = func(s) 9 # print(s) 10 # 第二种方法,递归 11 # def func(x, day): 12 # day -= 1 13 # if day == 0: 14 # return x 15 # x = (x+1)*2 16 # ret = func(x, day) 17 # return ret 18 # ret = func(1,10) 19 # print(ret)

浙公网安备 33010602011771号