第三次作业

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)
答案
posted @ 2018-04-08 15:44  Mr_Albert  阅读(73)  评论(0)    收藏  举报