老男孩 Python 基础知识练习(三)

1、列举布尔值为 False 的值
空,None,0, False, '', [], {}, ()

2、写函数:
根据范围获取其中 3 和 7 整除的所有数的和,并返回调用者:符合条件的数字个数以及符合条件的数字的总和
如: def func(start,end):

 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

3、函数的默认返回值是什么?
None

4、简述break/continue/return的区别
Break:用于退出所有循环
continue:跳出本次循环,继续执行下次循环
return:程序返回,不再执行下面的代码

5、函数传递参数时,是引用还是复制值?并证明提示:可以用 id 进行判断

答:是引用,

ps:

 def f1(arg):
print(id(arg)) n=1111111
print(id(n))
f1(n)

执行结果:

 26219232

 26219232

6、简述三元运算书写格式以及应用场景

python的三元运算书写格式:
变量名 = 变量1 if 条件判断成立 else 变量2

解释:条件成立 变量名值为变量1 否则为变量2

7、简述 lambda 表达式书写格式以及应用场景
1、书写格式:函数名=lambda 形参:功能 不写函数名也可以

2、应用场景

将简单的函数书写成 匿数名函数,减少代码

8、使用 set 集合获取两个列表l1=[11,22,33],l2=[22,33,44]中相同的元素集合

法1:

 l1=[11,22,33]
l2=[22,33,44] n1=set(l1)
n2=set(l2)
print(n1.intersection(n2))

执行结果:

 {33, 22}

法2:

 l1=[11,22,33]
l2=[22,33,44]
set(11)&set(12)

9、定义函数统计一个字符串中大写字母、小写字母、数字的个数,并以字典为结果返回给调用者

 def num(st):
a = 0
b = 0
c = 0
for i in st:
if i.isupper(): #判断是否是大小字母
a += 1
elif i.islower(): #判断是否是小写字母
b += 1
elif i.isdigit(): #判断是否是数字
c += 1
return a, b, c, sf = "sefisehfi294723dASE"
cc = num(sf)
print(cc)

执行结果:

 (3, 10, 6)

10、简述函数的位置参数、关键字参数、默认参数、可变长参数的特点以及注意事项

位置参数:按形参的位置传入,叫位置参数就是普通参数

关键字参数:传入实参时指定形参的值

默认参数:形参直接指定默认值的参数

可变长参数:*args **kwargs,一个只能接收没有位置参数的实参或参入的列表,元组,俩可以接收关键字参数和字典格式。

11、检查代码,如有错误请改正(禁止运行代码):

a.

 def func(x,y,z):
print(x,y,z) func(1,2,3)

输出结果为:

 1 2 3

b.

 def func(x,z,y=5):    #有赋值的参数,传入的参数必须在右边,否则会报错
print(x,y,z)
func(1,3,3)

输出结果为:

 1 3 3

c.

 def func(x,y,*z):
print(x,y,z) func(1,2,3,4,5,6)

输出结果为:

 1 2 (3, 4, 5, 6)

d.

 def func(x,y,*z):
print(x,y,z) func(1,2,3,4,5,6,6)

输出结果为:

 1 2 (3, 4, 5, 6, 6)

e.

 def func(x,*z,**y):
print(x,y,z) func(1,2,3)

输出结果为:

 1 {} (2, 3)

f.

 def func(x,*y,**z):
print(x,y,z) func(1,name=2,age=3)

输出结果为:

 1 () {'age': 3, 'name': 2}

g.

 def func(x,*y,**z):
print(x,y,z) func(1,2,3,4,name=2,age=3)

输出结果为:

 1 (2, 3, 4) {'age': 3, 'name': 2}

h.

 def func(x=2,*y,**z):
print(x,y,z) func(name=2,age=3)

输出结果为:

 2 () {'age': 3, 'name': 2}

13、书写输出结果(禁止运行代码):

a.

 def func(*y,**z):
print(y,z) func(1,2,3,4,5)

输出结果为:

 (1, 2, 3, 4, 5) {}

b.

 def func(*y,**z):
print(y,z) func([1,2,3,4,5])

输出结果为:

 ([1, 2, 3, 4, 5],) {}

c.

 def func(*y,**z):
print(y,z) func(*[1,2,3,4,5])

输出结果为:

 (1, 2, 3, 4, 5) {}

d.

 def func(*y,**z):
print(y,z) func(*[1,2,3,4,5],name="alex",age=19)

输出结果为:

 (1, 2, 3, 4, 5) {'age': 19, 'name': 'alex'}

e.

 def func(x,*z,**y):
print(x,y,z) func(1,2,3)

输出结果为:

 1 {} (2, 3)

f.

 def func(*y,**z):
print(y,z) func(*[1,2,3,4,5],**{"name":"alex","age":19})

输出结果为:

 (1, 2, 3, 4, 5) {'age': 19, 'name': 'alex'}

14、书写执行结果(禁止运行代码)

 def func1(x=1,*y,**z):
print(x,y,z)
return y
print(x) def func2(arg):
ret=func1(name=arg)
print(ret) result = func2("Fuck")
print(result)

输出结果为:

 1 () {'name': 'Fuck'}
()
None

15、书写执行结果(禁止运行代码)

 def func(arg):
arg.append(55) li=[11,22,33,44]
func(li)
print(li)
li=func(li)
print(li)

输出结果为:

 [11, 22, 33, 44, 55]

 None

16、书写执行结果(禁止运行代码)

 def f1(arg):
print(arg+100) def f2(arg):
ret=f1(arg+1)
print(arg)
print(ret) ret=f2(7)
print(ret)

输出结果为:

 108
7
None
None

17、简述 Python3 中的 range 函数和 Python2.7 中的 range 函数有什么区别?
答:区别:在于返回值的不同

python3.x range 不会生成值,只有用的时候才会生成

python3.x range 会直接生成一个列表,值已经生成

区别示例:
python2.x中的range返回的是一个列表

 >>> range(1,10)  #打印出1-10的数字,python默认从0开始
[1, 2, 3, 4, 5, 6, 7, 8, 9]

python3.x中的range返回的是一个迭代值

#错误的方法

 >>> range(1,10)
range(1, 10)

#正确的方法,要想打印出列表,需要加list

 >>> list(range(1,10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

18、书写执行结果(禁止运行代码)

a、

 a="oldboy%"
print(a)

输出结果为:

 oldboy%

b、

 b="oldboy%d%%"%(12,)
print(b)

输出结果为:

 oldboy12%

19、简述对象和类的关系

如果值是某类型,那这个值就是这个类的对象

20、书写执行结果(禁止运行代码)

 def func(a1):
return a1 + 100 #func值被系统垃圾回收机制回收。 func = lambda a1:a1 + 200 def func(a1)
5 return a1 + 200 #下面这个func覆盖掉上面那个a1的值=a1+200=210
 ret = func(10)  print(ret)     

输出结果为:

 210

21、内置函数 all 和 any 的区别

答:any是任意,而all是全部。

all   : 当传入空可迭代对象时返回True,当可迭代对象中有任意一个不为True,则返回False

any : 当传入空可迭代对象时返回False,当可迭代对象中有任意一个不为False,则返回True

22、简述文件打开模式'r'和'rb'的区别

答:

r   是只读模式打开,默认以utf-8格式

rb 是以二进制格式打开

23、将字符串"老男人"转换成 UTF-8 编码的字节类型

 name = "老男人"
#print(bytes(name, encoding='utf-8'))
print(bytes(name, encoding='utf-8').decode('utf-8'))

执行结果:

 老男人

24、利用内置函数将十进制数字12,分别转换成二进制、八进制、十六进制表示的字符串

 print(bin(12))   #二进制
print(oct(12)) #八进制
print(hex(12)) #十六进制

执行结果:

 0b1100      #二进制
0o14 #八进制
0xc #十六进制

25、简述内置函数 globals()、locals()作用

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"

ps1:

 l1 = ["alex", 22, 33, 44, 55]
l2 = ["is", 22, 33, 44, 55]
l3 = ["good", 22, 33, 44, 55]
l4 = ["guy", 22, 33, 44, 55] #print(list(zip(l1,l2,l3,l4)))
n1 = list(zip(l1,l2,l3,l4))
n2 = n1[0]
n3 = '_'.join(n2)
print(n3)

执行结果:

 alex_is_good_guy

ps2:

 print("_".join(list(zip(l1,l2,l3,l4))[0]))

27、判断输出结果是否相同?并可得到什么结论?

 def f1(arg):
print(id(arg)) n=1111111
print(id(n))
f1(n)

输出的两个值是否相同:相同

 执行结果:
11277024 11277024

28、书写执行结果(禁止运行代码)
a.

 NAMELIST=["alex","eric"]

 def func():
NAMELIST=123 func()
print(NAMELIST)

输出结果为:

 ['alex', 'eric']

b.

 NAMELIST=["alex","eric"]

 def func():
global NAMELIST
NAMELIST=123 func()
print(NAMELIST)

输出结果为:

 123

c.

 NAMELIST=["alex","eric"]

 def func():
NAMELIST.append("seven") func()
print(NAMELIST)

输出结果为:

 ['alex', 'eric', 'seven']

d.

 NAMELIST = ["alex", "eric"]

 def func():
NAMELIST = 123
global NAMELIST func()
print(NAMELIST)

输出结果为:

 123

 D:/python/job8/job.py:335: SyntaxWarning: name 'NAMELIST' is assigned to before global declaration
global NAMELIST

29、书写执行结果(禁止运行代码)
a.

 name = "root"
def func():
name = "seven"
def outer():
name = "eric"
def inner():
global name
name = "蒙逼了吧..."
print(name)
print(name) ret = func()
print(ret)
print(name)

输出结果为:

 seven
None
root

b.

 name = "root"
def func():
name = "seven"
def outer():
name = "eric"
def inner():
global name
name = "蒙逼了吧..."
print(name)
o = outer()
print(o)
print(name) ret = func()
print(ret)
print(name)

输出结果为:

 eric
None
seven
None
root

c.

 name = "root"
def func():
name = "seven"
def outer():
name = "eric"
def inner():
global name
name = "蒙逼了吧..."
print(name)
inner()
o = outer()
print(o)
print(name) ret = func()
print(ret)
print(name)

输出结果为:

 eric
None
seven
None
蒙逼了吧...

d.

 name = "root"
def func():
name = "seven"
def outer():
name = "eric"
def inner():
nonlocal name
name = "蒙逼了吧..."
print(name)
inner()
o = outer()
print(o)
print(name) ret = func()
print(ret)
print(name)

输出结果为:

 eric
None
seven
None
root

30、书写执行结果并解释每一步操作

a.

 name = "苍老师"

 def outer(func):
name = 'alex'
func() def show():
print(name)
outer(show)

执行结果:

 苍老师

b.

 name = "苍老师"

 def outer():
name = "波多"
def inner():
print(name)
return inner() ret = outer()
print(ret)

输出结果为:

 波多
None

c.

 name = "苍老师"

 def outer():
name = "波多"
def inner():
print(name)
return inner ret = outer()
ret()
print(ret)
result = ret()
print(result)

输出结果为:

 波多
<function outer.<locals>.inner at 0x01225660> #inner内存地址
波多
None

d.

 name = "苍老师"

 def outer():
name = "波多"
def inner():
print(name)
return inner ret = outer()
print(ret)
result = ret()
print(result)

输出结果为:

 <function outer.<locals>.inner at 0x01715660>
波多
None

e.

 name = "苍老师"

 def outer(func):
def inner():
name = "李杰"
func()
return inner def show():
print(name) outer(show)()

执行结果:

 苍老师

31、书写执行结果并解释每一步操作

a.

 def outer(func,z,y):
func(z) def show(x):
return x * x ret = outer(show,9,23) print(ret)

输出结果为:

 None

b.

 def outer(func, z, y):
return func(z)
def show(x):
return x * x ret = outer(show,9,23)
print(ret)

输出结果为:

 81

c.

 def outer(func,z,y):
func(z,y) f1 = lambda x,y:x+y
ret = outer(f1,11,23)
print(ret)

输出结果为:

 None

d.

 def outer(func, z, y):
return func(z, y) f1 = lambda x,y:x + y
ret = outer(f1, 11, 23)
print(ret)

输出结果为:

 34

32、写输出结果

a.

 def f5(arg):
arg.append('偷到 500 万') def f4(arg):
arg.append('开第四个门')
f5(arg)
arg.append('关第四个门') def f3(arg):
arg.append('开第三个门')
f4(arg)
arg.append('关第三个门') def f2(arg):
arg.append('开第二个门')
f3(arg)
arg.append('关第二个门') def f1(arg):
arg.append('开一个门')
f2(arg)
arg.append('关一个门') user_list = []
result = f1(user_list)
print(user_list)
print(result)

输出结果为:

 ['开一个门', '开第二个门', '开第三个门', '开第四个门', '偷到 500 万', '关第四个门', '关第三个门', '关第二个门', '关一个门']
None

b.

 def f5(arg):
arg = arg + 5 def f4(arg):
arg = arg + 4
f5(arg)
arg = arg + 4 def f3(arg):
arg = arg + 3
f4(arg)
arg = arg + 3 def f2(arg):
arg = arg + 2
f3(arg)
arg = arg + 2 def f1(arg):
arg = arg + 1
f2(arg)
arg = arg + 1 num = 1
result = f1(num)
print(num)
print(result)

输出结果为:

 1
None

c.

 def f5(arg):
arg = arg + 5
return arg def f4(arg):
arg = arg + 4
f5(arg)
arg = arg + 4
return arg def f3(arg):
arg = arg + 3
f4(arg)
arg = arg + 3
return arg def f2(arg):
arg = arg + 2
f3(arg)
arg = arg + 2
return arg def f1(arg):
arg = arg + 1
f2(arg)
arg = arg + 1
return arg num = 1
result = f1(num)
print(num)
print(result)

输出结果为:

 1
3

d、利用递归实现32 题中c题的功能

 def fnuc(x,y=0):
y += 1
if y == 5:
return x + y
x += y
func(x,y)
x += y
return x num = 1
result = fnuc(num)
print(num)
print(result)

33、利用递归实现1*2*3*4*5*6*7

ps1:

 #参数t保存每次计算的结果,n保持递增,然后进行计算

 def func(n,t):
t=t*n
if n>=7:
return t
n+=1
return func(n,t) print(func(2,1))

执行结果:

 5040

ps2:

 from functools import reduce
print(reduce(lambda x,y:x*y,[x for x in range(1,8)]))

执行结果:

1 5040

34、写程序

a.利用filter、自定义函数获取 l1 中元素大于 33 的所有元素l1=[11,22,33,44,55]

ps1:

 def f1(args):
if args>33:
return True l1 = [11,22,33,44,55]
ret = filter(f1,l1)
print(list(ret))

执行结果:

 [44, 55]

ps2:

filter+lambda方式

 l1 = [11,22,33,44,55]
print(list(filter(lambda x:x>33,l1)))

执行结果:

1 [44, 55]

b.利用filter、lambda 表达式获取 l1 中元素小于 33 的所有元素l1=[11,22,33,44,55]

 l1 = [11,22,33,44,55]
print(list(filter(lambda x:x<33,l1)))

执行结果

 [11, 22]

c.利用map、自定义函数将所有是奇数的元素加 100

l1=[11,22,33,44,55]

d.利用map、lambda 表达式将所有是偶数的元素加 100

l1=[11,22,33,44,55]

35、写程序
a.文件操作时 with 的作用?

whih 打开文件执行完毕后自动关闭

b.写程序:利用 with 实现同时打开两个文件(一读,一写,并将读取的内容写入到写入模式的文件中)

 with open("a", "r") as x, open("b","w") as y:
y.write(x.read())

36、写函数:
如有以下两个列表
l1=[...]
l2=[]
第一个列表中的数字无序不重复排列,第二个列表为空列表
需求:
取出第一个列表的最小值放到第二个列表的首个位置,
取出第一个列表的最小值(仅大于上一次的最小值)放到第二个列表的首个位置,
取出第一个列表的最小值(仅大于上一次的最小值)放到第二个列表的首个位置,
...
依此类推,从而获取一个有序的列表 l2,并将其返回给函数调用者。

deffunc(l1,l2):
pass

答:

 l1 = [11,33,44,2,66]
l2 = []
def foo(x,y):
for item in range(len(x)):
v = min(x)
y.insert(0,v)
x.remove(v)
return y
print(foo(l1,l2))

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()语句是为了验证推算过程而增加的。

代码如下:

ps:

 p = 1
print('第10天吃之前就剩1个桃子')
for i in range(9, 0, -1):
p = (p+1) * 2
print('第%s天吃之前还有%s个桃子' % (i, p))
print('第1天共摘了%s个桃子' % p)

执行结果:

 第10天吃之前就剩1个桃子
第9天吃之前还有4个桃子
第8天吃之前还有10个桃子
第7天吃之前还有22个桃子
第6天吃之前还有46个桃子
第5天吃之前还有94个桃子
第4天吃之前还有190个桃子
第3天吃之前还有382个桃子
第2天吃之前还有766个桃子
第1天吃之前还有1534个桃子
第1天共摘了1534个桃子

ps2:

 s = 1
func = lambda x: (x + 1) * 2
for i in range(9):
s = func(s)
print(s)

ps3:

 def func(x, day):
day -= 1
if day == 0:
return x
x = (1 + x) * 2
ret = func(x, day)
return ret ret = func(1, 10)
print(ret)

python基础-基础知识考试_day5 (包括:函数_递归等知识)的更多相关文章

  1. 020--python函数基础知识考试(包括:函数_递归等知识)

    1.列举布尔值为 False 的值 空,None,0, False, '', [], {}, () 2.写函数: 根据范围获取其中 3 和 7 整除的所有数的和,并返回调用者:符合条件的数字个数以及符 ...

  2. python基础-基础知识(包括:函数递归等知识)

    老男孩 Python 基础知识练习(三) 1.列举布尔值为 False 的值空,None,0, False, ", [], {}, () 2.写函数:根据范围获取其中 3 和 7 整除的所有 ...

  3. Python基础(协程函数、内置函数、递归、模块和包)-day05

    写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04  ...

  4. Python:基础知识

    python是一种解释型.面向对象的.带有动态语义的高级程序语言. 一.下载安装 官网下载地址:https://www.python.org/downloads 下载后执行安装文件,按照默认安装顺序安 ...

  5. 『Python基础-1 』 编程语言Python的基础背景知识

    #『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...

  6. Python 面向对象基础知识

    面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...

  7. Python数据挖掘——基础知识

    Python数据挖掘——基础知识 数据挖掘又称从数据中 挖掘知识.知识提取.数据/模式分析 即为:从数据中发现知识的过程 1.数据清理 (消除噪声,删除不一致数据) 2.数据集成 (多种数据源 组合在 ...

  8. python开发基础04-函数、递归、匿名函数、高阶函数、装饰器

    匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...

  9. Python基础学习笔记(十一)函数、模块与包

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...

随机推荐

  1. bias、variance与拟合之间的关系

    Error = Bias^2 + Variance+Noise 误差的原因: 1.Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,即算法本身的拟合能力. 2.Variance ...

  2. 2019.2.23VScode的c++配置详细方法

    根据个人经验,最新的c++配置方法. 主要的步骤: 安装Vscode 在Vscode类安装c++插件 安装编译调试环境 修改Vscode配置文件. 安装Vscode的步骤省略 如何配置Vscode中文 ...

  3. erlang 开发建议

    * 确保没有任何编译警告 * Erlang中String采用list实现,32位系统中,其1个字符用8个字节的空间(4个保存value, 4个保存指针).因此string速度较慢,空间占用较大 * 在 ...

  4. JAVA算法之简单排序

    冒泡排序: 在概念上是排序算法中最简单的,但是运行起来非常慢,冒泡排序遵循以下几个规则(假如我们现在要给一队打乱的足球队员排序): 比较两个队员 如果左边的队员比右边的高,则交换位置 向右移动一位,比 ...

  5. leetcode-157周赛-5213-玩筹码

    题目描述: 自己的提交: class Solution: def minCostToMoveChips(self, chips: List[int]) -> int: res = float(' ...

  6. Jmeter使用:JSON返回数据处理

    想要解决的问题: 通过查询接口,获取response数据,作为下个请求post的参数值 后置处理器:JSON Extractor 先下载一个插件:JSONPathExtractor Names of ...

  7. Flink on YARN(下):常见问题与排查思路

    Flink 支持 Standalone 独立部署和 YARN.Kubernetes.Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛.Flink 社区将推出 Flink ...

  8. HashMap(常用)方法个人理解

      Hashmap的存值: public static void main(String[] args) { ///*Integer*/map.put("1", 1);//向map ...

  9. 夏令营501-511NOIP训练18——高三楼

    传送门:QAQQAQ 题意:定义矩阵A与矩阵B重复,当且仅当A可以通过任意次行列交换得到B,例如下图A,B即为合法矩阵 现求对于$n*n$的矩阵有多少个不重复的矩阵 数据范围: 对于10%的数据 N≤ ...

  10. JavaScript开发人员必知的10个关键习惯

    还在一味没有目的的编写JavaScript代码吗?那么你就OUT了!让我们一起来看看小编为大家搜罗的JavaScript开发人员应该具备的十大关键习惯吧! 随着新技术的不断发展,JavaScript已 ...