老男孩 Python 基础知识练习(三)
1、列举布尔值为 False 的值
空,None,0
2、写函数:
根据范围获取其中 3 和 7 整除的所有数的和,并返回调用者:符合条件的数字个数以及符合条件的数字的总和
如: def
func(start,end):
3、函数的默认返回值是什么?
None
4、简述break/continue/return的区别
Break:用于退出所有循环
continue:跳出本次循环,继续执行下次循环
return:程序返回,不再执行下面的代码
5、函数传递参数时,是引用还是复制值?并证明提示:可以用 id 进行判断
6、简述三元运算书写格式以及应用场景
python的三元运算书写格式:
变量名 = 变量1 if 条件判断成立 else 变量2
解释:条件成立 变量名值为变量1 否则为变量2
7、简述 lambda 表达式书写格式以及应用场景
1、书写格式:lambda x:x+1
2、应用场景
8、使用 set 集合获取两个列表l1=[11,22,33],l2=[22,33,44]中相同的元素集合
1 l1=[11,22,33] 2 l2=[22,33,44] 3 4 n1=set(l1) 5 n2=set(l2) 6 print(n1.intersection(n2))
执行结果:
1 {33, 22}
9、定义函数统计一个字符串中大写字母、小写字母、数字的个数,并以字典为结果返回给调用着
10、简述函数的位置参数、关键字参数、默认参数、可变长参数的特点以及注意事项
11、检查代码,如有错误请改正(禁止运行代码):
a.
1 def func(x,y,z): 2 print(x,y,z) 3 4 func(1,2,3)
输出结果为:
1 1 2 3
b.
1 def func(x,y=5,z): 2 print(x,y,z) 3 4 func(1,3,3)
输出结果为:会报错 (因为y定义了值,就不能再传值)
c.
1 def func(x,y,*z): 2 print(x,y,z) 3 4 func(1,2,3,4,5,6)
输出结果为:
1 1 2 (3, 4, 5, 6)
d.
1 def func(x,y,**z): 2 print(x,y,z) 3 4 func(1,2,3,4,5,6,6)
输出结果为:报错
e.
1 def func(x,**y,*z): 2 print(x,y,z) 3 4 func(1,2,3)
输出结果为:报错
f.
1 def func(x,*y,**z): 2 print(x,y,z) 3 4 func(1,name=2,age=3)
输出结果为:
1 1 () {‘age‘: 3, ‘name‘: 2}
g.
1 def func(x,*y,**z): 2 print(x,y,z) 3 4 func(1,2,3,4,name=2,age=3)
输出结果为:
1 1 (2, 3, 4) {‘age‘: 3, ‘name‘: 2}
h.
1 def func(x=2,*y,**z): 2 print(x,y,z) 3 4 func(name=2,age=3)
输出结果为:
1 2 () {‘age‘: 3, ‘name‘: 2}
13、书写输出结果(禁止运行代码):
a.
1 def func(*y,**z): 2 print(y,z) 3 4 func(1,2,3,4,5)
输出结果为:
1 (1, 2, 3, 4, 5) {}
b.
1 def func(*y,**z): 2 print(y,z) 3 4 func([1,2,3,4,5])
输出结果为:
1 ([1, 2, 3, 4, 5],) {}
c.
1 def func(*y,**z): 2 print(y,z) 3 4 func(*[1,2,3,4,5])
输出结果为:
1 (1, 2, 3, 4, 5) {}
d.
1 def func(*y,**z): 2 print(y,z) 3 4 func(*[1,2,3,4,5],name="alex",age=19)
输出结果为:
1 (1, 2, 3, 4, 5) {‘age‘: 19, ‘name‘: ‘alex‘}
e.
1 def func(*y,**z): 2 print(y,z) 3 4 func(*[1,2,3,4,5],{"name":"alex","age":19})
输出结果为:
1 (1, 2, 3, 4, 5, {‘age‘: 19, ‘name‘: ‘alex‘}) {}
f.
1 def func(*y,**z): 2 print(y,z) 3 4 func(*[1,2,3,4,5],**{"name":"alex","age":19})
输出结果为:
1 (1, 2, 3, 4, 5) {‘age‘: 19, ‘name‘: ‘alex‘}
14、书写执行结果(禁止运行代码)
1 def func1(x=1,*y,**z): 2 print(x,y,z) 3 returny 4 print(x) 5 6 def func2(arg): 7 ret=func1(name=arg) 8 print(ret) 9 10 result = func2("Fuck") 11 print(result)
输出结果为:报错
15、书写执行结果(禁止运行代码)
1 def func(arg): 2 arg.append(55) 3 4 li=[11,22,33,44] 5 func(li) 6 print(li) 7 li=func(li) 8 print(li)
输出结果为:
1 [11, 22, 33, 44, 55] 2 3 None
16、书写执行结果(禁止运行代码)
1 def f1(arg): 2 print(arg+100) 3 4 def f2(arg): 5 ret=f1(arg+1) 6 print(arg) 7 print(ret) 8 9 ret=f2(7) 10 print(ret)
输出结果为:
1 108 2 7 3 None 4 None
17、简述 Python3 中的 range 函数和 Python2.7 中的 range 函数有什么区别?
答:区别:在于返回值的不同
python2.x中的range返回的是一个列表
1 >>> range(1,10) #打印出1-10的数字,python默认从0开始 2 [1, 2, 3, 4, 5, 6, 7, 8, 9]
python3.x中的range返回的是一个迭代值
#错误的方法
1 >>> range(1,10) 2 range(1, 10)
#正确的方法,要想打印出列表,需要加list
1 >>> list(range(1,10)) 2 [1, 2, 3, 4, 5, 6, 7, 8, 9]
18、书写执行结果(禁止运行代码)
a、
1 a="oldboy%" 2 print(a)
输出结果为:
1 oldboy%
b、
1 b="oldboy%d%%"%(12,) 2 print(b)
输出结果为:
1 oldboy12%
19、简述对象和类的关系
20、书写执行结果(禁止运行代码)
1 def func(a1): 2 returna1 + 100 3 4 func = lambda a1:a1 + 200 5 6 ret = func(10) 7 print(ret)
输出结果为:
1 210
21、内置函数 all 和 any 的区别
答:any是任意,而all是全部。
all : 当传入空可迭代对象时返回True,当可迭代对象中有任意一个不为True,则返回False
any : 当传入空可迭代对象时返回False,当可迭代对象中有任意一个不为False,则返回True
22、简述文件打开模式‘r‘和‘rb‘的区别
23、将字符串"老男人"转换成 UTF-8 编码的字节类型
24、利用内置函数将十进制数字12,分别转换成二进制、八进制、十六进制表示的字符串
25、简述内置函数 globals()、locals()作用
26、利用内置函数 zip(),实现功能
l1=["alex",22,33,44,55]
l2=["is",22,33,44,55]
l3=["good",22,33,44,55]
l4=["guy",22,33,44,55]
请获取字符串s="alex_is_good_guy"
27、判断输出结果是否相同?并可得到什么结论?
deff1(arg):
print(id(arg))
n=1111111
print(id(n))
f1(n)
输出的两个值是否相同:
28、书写执行结果(禁止运行代码)
a.
NAMELIST=["alex","eric"]
deffunc():
NAMELIST=123
func()
print(NAMELIST)
输出结果为:
b.
NAMELIST=["alex","eric"]
deffunc():
globalNAMELIST
NAMELIST=123
func()
print(NAMELIST)
输出结果为:
c.
NAMELIST=["alex","eric"]
deffunc():
NAMELIST.append("seven")
func()
print(NAMELIST)
输出结果为:
d.
NAMELIST=["alex","eric"]
deffunc():
NAMELIST=123
globalNAMELIST
func()
print(NAMELIST)
输出结果为:
29、书写执行结果(禁止运行代码)
a.
name="root"
deffunc():
name="seven"
defouter():
name="eric"
definner():
globalname
name="蒙逼了吧..."
print(name)
print(name)
ret=func()
print(ret)
print(name)
输出结果为:
b.
name="root"
deffunc():
name="seven"
defouter():
name="eric"
definner():
globalname
name="蒙逼了吧..."
print(name)
o=outer()
print(o)
print(name)
ret=func()
print(ret)
print(name)
输出结果为:
c.
name="root"
deffunc():
name="seven"
defouter():
name="eric"
definner():
globalname
name="蒙逼了吧..."
print(name)
inner()
o=outer()
print(o)
print(name)
ret=func()
print(ret)
print(name)
输出结果为:
d.
name="root"
deffunc():
name="seven"
defouter():
name="eric"
definner():
nonlocalname
name="蒙逼了吧..."
print(name)
inner()
o=outer()
print(o)
print(name)
ret=func()
print(ret)
print(name)
输出结果为:
30、书写执行结果并解释每一步操作
a.
name="苍老师"
defouter(func):
name=‘alex‘
func()
defshow():
print(name)
outer(show)
b.
name="苍老师"
defouter():
name="波多"
definner():
print(name)
returninner()
ret=outer()
print(ret)
输出结果为:
c.
name="苍老师"
defouter():
name="波多"
definner():
print(name)returninner
ret=outer()
ret()
print(ret)
result=ret()
print(result)
输出结果为:
d.
name="苍老师"
defouter():
name="波多"
definner():
print(name)
returninner
ret=outer()
print(ret)
result=ret()
print(result)
输出结果为:
e.
name="苍老师"
defouter(func):
definner():
name="李杰"
func()
returninner
defshow():
print(name)
outer(show)()
31、书写执行结果并解释每一步操作
a.
defouter(func,z,y):
func(z)
defshow(x):
returnx*x
ret=outer(show,9,23)
print(ret)
输出结果为:
b.
defouter(func,z,y):
returnfunc(z)
defshow(x):
returnx*x
ret=outer(show,9,23)
print(ret)
输出结果为:
c.
defouter(func,z,y):
func(z,y)
f1=lambdax,y:x+y
ret=outer(f1,11,23)
print(ret)
输出结果为:
d.
defouter(func,z,y):
returnfunc(z,y)
f1=lambdax,y:x+y
ret=outer(f1,11,23)
print(ret)
输出结果为:
32、写输出结果
a.
deff5(arg):
arg.append(‘偷到 500 万‘)
deff4(arg):
arg.append(‘开第四个门‘)f5(arg)
arg.append(‘关第四个门‘)
deff3(arg):
arg.append(‘开第三个门‘)
f4(arg)
arg.append(‘关第三个门‘)
deff2(arg):
arg.append(‘开第二个门‘)
f3(arg)
arg.append(‘关第二个门‘)
deff1(arg):
arg.append(‘开一个门‘)
f2(arg)
arg.append(‘关一个门‘)
user_list=[]
result=f1(user_list)
print(user_list)
print(result)
输出结果为:
b.
deff5(arg):
arg=arg+5
deff4(arg):
arg=arg+4
f5(arg)
arg=arg+4
deff3(arg):
arg=arg+3
f4(arg)
arg=arg+3
deff2(arg):
arg=arg+2
f3(arg)
arg=arg+2
deff1(arg):
arg=arg+1
f2(arg)
arg=arg+1num=1
result=f1(num)
print(num)
print(result)
输出结果为:
c.
deff5(arg):
arg=arg+5
returnarg
deff4(arg):
arg=arg+4
f5(arg)
arg=arg+4
returnarg
deff3(arg):
arg=arg+3
f4(arg)
arg=arg+3returnarg
deff2(arg):
arg=arg+2
f3(arg)
arg=arg+2
returnarg
deff1(arg):
arg=arg+1
f2(arg)
arg=arg+1
returnarg
num=1
result=f1(num)
print(num)
print(result)
输出结果为:
33、利用递归实现32 题中c题的功能33、利用递归实现1*2*3*4*5*6*7
34、写程序
a.利用filter、自定义函数获取 l1 中元素大于 33 的所有元素l1=[11,22,33,44,55]
b.利用filter、lambda 表达式获取 l1 中元素小于 33 的所有元素l1=[11,22,33,44,55]
c.利用map、自定义函数将所有是奇数的元素加 100l1=[11,22,33,44,55]
d.利用map、lambda 表达式将所有是偶数的元素加 100l1=[11,22,33,44,55]
35、写程序
a.文件操作时 with 的作用?
b.写程序:利用 with 实现同时打开两个文件(一读,一写,并将读取的内容写入到写入模式的文件中)
36、写函数:
如有以下两个列表
l1=[...]
l2=[]
第一个列表中的数字无序不重复排列,第二个列表为空列表
需求:
取出第一个列表的最小值放到第二个列表的首个位置,
取出第一个列表的最小值(仅大于上一次的最小值)放到第二个列表的首个位置,
取出第一个列表的最小值(仅大于上一次的最小值)放到第二个列表的首个位置,
...
依此类推,从而获取一个有序的列表 l2,并将其返回给函数调用者。
deffunc(l1,l2):
pass
37、猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多吃了一个。以后每天都吃前一天剩下的一半再加一个。到第 10 天刚好剩一个。问猴子第一天摘了多少个桃子?
解题思路:
这题得倒着推。第10天还没吃,就剩1个,说明第9天吃完一半再吃1个还剩1个,假设第9天还没吃之前有桃子p个,可得:p * 1/2 - 1 = 1,可得 p = 4。以此类推,即可手算出。
代码思路为:第10天还没吃之前的桃子数量初始化 p = 1,之后从9至1循环9次,根据上述公式反推为 p = (p+1) * 2 可得第1天还没吃之前的桃子数量。for循环中的print()语句是为了验证推算过程而增加的。
代码如下:
1 p = 1 2 print(‘第10天吃之前就剩1个桃子‘) 3 for i in range(9, 0, -1): 4 p = (p+1) * 2 5 print(‘第%s天吃之前还有%s个桃子‘ % (i, p)) 6 print(‘第1天共摘了%s个桃子‘ % p)
执行结果:
1 第10天吃之前就剩1个桃子 2 第9天吃之前还有4个桃子 3 第8天吃之前还有10个桃子 4 第7天吃之前还有22个桃子 5 第6天吃之前还有46个桃子 6 第5天吃之前还有94个桃子 7 第4天吃之前还有190个桃子 8 第3天吃之前还有382个桃子 9 第2天吃之前还有766个桃子 10 第1天吃之前还有1534个桃子 11 第1天共摘了1534个桃子