python考试报名时间及方式汇总_020--python函数基础知识考试(包括:函数_递归等知识)...

1、列举布尔值为 False 的值

空,None,0, False, '', [], {}, ()

2、写函数:

根据范围获取其中 3 和 7 整除的所有数的和,并返回调用者:符合条件的数字个数以及符合条件的数字的总和

如: def func(start,end):

def func(start,end,count=0):

s=0

for i in range(start,end+1):

if i%3==0 and i%7==0:

s+=i

count+=1

print('总和:%s 个数:%s'%(s,count))

func(1,100)

#输出 总和:210 个数:4

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

None

4、简述break/continue/return的区别

break        结束当前层循环

continue    结束本次循环

return       作为函数运行结束标志

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

传引用

def fib(n):

print('函数中',id(n))

n=5

print('函数外',id(n))

fib(5)

输出:

函数外 1729344704

函数中 1729344704

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

c = a if a

7、简述 lambda 表达式书写格式以及应用场景

lambda n:n**2  适用于逻辑运算简单的函数

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

n1=set(l1) n2=set(l2)  res=n1.intersation(n2)

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

def fib(stre):

count1,count2,count3=0,0,0

for i in stre:

if i.isupper():

count1+=1

if i.islower():

count2+=1

if i.isdigit():

count3+=1

return ({'大写字母':count1,'小写字母':count2,'数字':count3})

res = fib('ASDfg1')

print(res)

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

位置参数:按照对应形参位置一一对应传入参数,普通参数

关键字参数:允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

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

可变长参数:传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个

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

a

1 def func(x,y,z):

2 print(x,y,z)

3

4 func(1,2,3)

#输出(1 2 3)

b

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

2 print(x,y,z)

3 func(1,3,3)

#输出(1 3 3)

c

1 def func(x,y,*z):

2 print(x,y,z)

3

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

#输出 (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)

#输出(1 2 (3,4,5,6,6))

e

1 def func(x,*z,**y):

2 print(x,y,z)

3

4 func(1,2,3)

#输出(1 {} (2,3))

f

1 def func(x,*y,**z):

2 print(x,y,z)

3

4 func(1,name=2,age=3)

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

g

1 def func(x,*y,**z):

2 print(x,y,z)

3

4 func(1,2,3,4,name=2,age=3)

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

h

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

2 print(x,y,z)

3

4 func(name=2,age=3)

#输出(2 () {'name':2,'age':3})

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

a

1 def func(*y,**z):

2 print(y,z)

3

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

#输出((1,2,3,4,5) {})

b

1 def func(*y,**z):

2 print(y,z)

3

4 func([1,2,3,4,5])

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

c

1 def func(*y,**z):

2 print(y,z)

3

4 func(*[1,2,3,4,5])

#输出 ((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,2,3,4,5) {'name':'alex','age':19})

e

1 def func(x,*z,**y):

2 print(x,y,z)

3

4 func(1,2,3)

#输出 (1 {} (2,3))

f

1 def func(*y,**z):

2 print(y,z)

3

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

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

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

1 def func1(x=1,*y,**z):

2 print(x,y,z)

3 return y

4 print(x)

5

6 def func2(arg):

7 ret=func1(name=arg)

8 print(ret)

9

10 result = func2("Fuck")

11 print(result)

#输出

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

()

None

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)

#输出

[11,22,33,44,55]

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)

#输出

108

7

None

None

17、简述 Python3 中的 range 函数和 Python2.7 中的 range 函数有什么区别?

返回值的不同: python3中range不会马上生成值,用的时候才生成    python2中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)

#输出

oldboy%

b、

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

2 print(b)

#输出

oldboy12%

19、简述对象和类的关系

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

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

1 def func(a1):

2 return a1 + 100 #func值被系统垃圾回收机制回收。

3

4 func = lambda a1:a1 + 200

def func(a1)

5 return a1 + 200 #下面这个func覆盖掉上面那个a1的值=a1+200=210

6 ret = func(10)

7 print(ret)

#输出

210

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

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

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

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

'r':只读模式打开,默认utf-8格式

'rb':以字节的形式打开文件

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

1 name = "老男人"

2 #print(bytes(name, encoding='utf-8'))

3 print(bytes(name, encoding='utf-8').decode('utf-8'))

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

1 print(bin(12)) #二进制

2 print(oct(12)) #八进制

3 print(hex(12)) #十六进制

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"

res = list(zip(l1,l2,l3,l4))

s='_'.join(res[0]

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

1 def f1(arg):

2 print(id(arg))

3

4 n=1111111

5 print(id(n))

6 f1(n)

输出的两个值是否相同:相同  对于传参数的时候传值还是传引用?python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。这种方式  相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一  个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。

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

a.

1 NAMELIST=["alex","eric"]

2

3 def func():

4 NAMELIST=123

5

6 func()

7 print(NAMELIST)

#输出

["alex","eric"]

b.

1 NAMELIST=["alex","eric"]

2

3 def func():

4 global NAMELIST

5 NAMELIST=123

6

7 func()

8 print(NAMELIST)

#输出

123

c.

1 NAMELIST=["alex","eric"]

2

3 def func():

4 NAMELIST.append("seven")

5

6 func()

7 print(NAMELIST)

#输出

["alex","eric","seven"]

d

1 NAMELIST = ["alex", "eric"]

2

3 def func():

4 NAMELIST = 123

5 global NAMELIST

6

7 func()

8 print(NAMELIST)

输出结果为:报错 SyntaxError: name 'NAMELIST' is assigned to before global declaration

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

a.

1 name = "root"

2 def func():

3 name = "seven"

4 def outer():

5 name = "eric"

6 def inner():

7 global name

8 name = "蒙逼了吧..."

9 print(name)

10 print(name)

11

12 ret = func()

13 print(ret)

14 print(name)

输出结果为:

seven

None

root

b.

1 name = "root"

2 def func():

3 name = "seven"

4 def outer():

5 name = "eric"

6 def inner():

7 global name

8 name = "蒙逼了吧..."

9 print(name)

10 o = outer()

11 print(o)

12 print(name)

13

14 ret = func()

15 print(ret)

16 print(name)

输出结果为:

eric

None

seven

None

root

c.

1 name = "root"

2 def func():

3 name = "seven"

4 def outer():

5 name = "eric"

6 def inner():

7 global name

8 name = "蒙逼了吧..."

9 print(name)

10 inner()

11 o = outer()

12 print(o)

13 print(name)

14

15 ret = func()

16 print(ret)

17 print(name)

输出结果为:

eric

None

seven

None

蒙逼了吧...

d.

1 name = "root"

2 def func():

3 name = "seven"

4 def outer():

5 name = "eric"

6 def inner():

7 nonlocal name

8 name = "蒙逼了吧..."

9 print(name)

10 inner()

11 o = outer()

12 print(o)

13 print(name)

14

15 ret = func()

16 print(ret)

17 print(name)

输出结果为:

eric

None

seven

None

root

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

a.

1 name = "苍老师"

2

3 def outer(func):

4 name = 'alex'

5 func()

6

7 def show():

8 print(name)

9 outer(show)

执行结果:

苍老师

b.

1 name = "苍老师"

2

3 def outer():

4 name = "波多"

5 def inner():

6 print(name)

7 return inner()

8

9 ret = outer()

10 print(ret)

输出结果为:

波多

None

c.

1 name = "苍老师"

2

3 def outer():

4 name = "波多"

5 def inner():

6 print(name)

7 return inner

8

9 ret = outer()

10 ret()

11 print(ret)

12 result = ret()

13 print(result)

输出结果为:

波多

.inner at 0x01225660> #inner内存地址

波多

None

d.

1 name = "苍老师"

2

3 def outer():

4 name = "波多"

5 def inner():

6 print(name)

7 return inner

8

9 ret = outer()

10 print(ret)

11 result = ret()

12 print(result)

输出结果为:

.inner at 0x01225660> #inner内存地址

波多

None

e.

1 name = "苍老师"

2

3 def outer(func):

4 def inner():

5 name = "李杰"

6 func()

7 return inner

8

9 def show():

10 print(name)

11

12 outer(show)()

执行结果:

苍老师

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

a.

1 def outer(func,z,y):

2 func(z)

3

4 def show(x):

5 return x * x

6

7 ret = outer(show,9,23)

8

9 print(ret)

输出结果为:

None

b.

1 def outer(func, z, y):

2 return func(z)

3 def show(x):

4 return x * x

5

6 ret = outer(show,9,23)

7 print(ret)

输出结果为:

81

c.

1 def outer(func,z,y):

2 func(z,y)

3

4 f1 = lambda x,y:x+y

5 ret = outer(f1,11,23)

6 print(ret)

输出结果为:

None

d.

1 def outer(func, z, y):

2 return func(z, y)

3

4 f1 = lambda x,y:x + y

5 ret = outer(f1, 11, 23)

6 print(ret)

输出结果为:

34

32、写输出结果

a.

1 def f5(arg):

2 arg.append('偷到 500 万')

3

4 def f4(arg):

5 arg.append('开第四个门')

6 f5(arg)

7 arg.append('关第四个门')

8

9 def f3(arg):

10 arg.append('开第三个门')

11 f4(arg)

12 arg.append('关第三个门')

13

14 def f2(arg):

15 arg.append('开第二个门')

16 f3(arg)

17 arg.append('关第二个门')

18

19 def f1(arg):

20 arg.append('开一个门')

21 f2(arg)

22 arg.append('关一个门')

23

24 user_list = []

25 result = f1(user_list)

26 print(user_list)

27 print(result)

输出结果为:

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

None

b.

1 def f5(arg):

2 arg = arg + 5

3

4 def f4(arg):

5 arg = arg + 4

6 f5(arg)

7 arg = arg + 4

8

9 def f3(arg):

10 arg = arg + 3

11 f4(arg)

12 arg = arg + 3

13

14 def f2(arg):

15 arg = arg + 2

16 f3(arg)

17 arg = arg + 2

18

19 def f1(arg):

20 arg = arg + 1

21 f2(arg)

22 arg = arg + 1

23

24 num = 1

25 result = f1(num)

26 print(num)

27 print(result)

输出结果为:

1

None

c.

1 def f5(arg):

2 arg = arg + 5

3 return arg

4

5 def f4(arg):

6 arg = arg + 4

7 f5(arg)

8 arg = arg + 4

9 return arg

10

11 def f3(arg):

12 arg = arg + 3

13 f4(arg)

14 arg = arg + 3

15 return arg

16

17 def f2(arg):

18 arg = arg + 2

19 f3(arg)

20 arg = arg + 2

21 return arg

22

23 def f1(arg):

24 arg = arg + 1

25 f2(arg)

26 arg = arg + 1

27 return arg

28

29 num = 1

30 result = f1(num)

31 print(num)

32 print(result)

输出结果为:

1

3

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

1 def fnuc(x,y=0):

2 y += 1

3 if y == 5:

4 return x + y

5 x += y

6 func(x,y)

7 x += y

8 return x

9

10 num = 1

11 result = fnuc(num)

12 print(num)

13 print(result)

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

def fib(n):

if n==1:

return 1

return n*fib(n-1)

res = fib(7)

print(res)

from functools import reduce

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

34、写程序

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

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

def fib(n):

l = []

if n>33:

l.append(n)

return l

res = list(filter(fib,l1))

print(res)

内置函数filter和lambda

res = list(filter(lambda n:n>33,l1))

print(res)

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

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

res = list(filter(lambda n:n<33,l1))

print(res)

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

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

def fib(n):

if n%2!=0:

n+=100

return n

res = list(map(fib,l1))

print(res)

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

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

35、写程序

a.文件操作时 with 的作用?

在操作文件结束后自动关闭

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

with open('a.txt','r',encoding='utf-8') as file_a,open('b.txt','w',encoding='utf-8') as file_b:

file_b.write(file_a.read())

36、写函数:

如有以下两个列表

l1=[...]

l2=[]

第一个列表中的数字无序不重复排列,第二个列表为空列表

需求:

取出第一个列表的最小值放到第二个列表的首个位置,

取出第一个列表的最小值(仅大于上一次的最小值)放到第二个列表的首个位置,

取出第一个列表的最小值(仅大于上一次的最小值)放到第二个列表的首个位置,

...

依此类推,从而获取一个有序的列表 l2,并将其返回给函数调用者。

deffunc(l1,l2):

pass

l1 = [50,70,30,80,75]

l2 = []

def deffunc(n1,n2):

while True:

if l1:

res=min(n1)

n1.remove(res)

n2.insert(0,res)

else:break

return n2

res = deffunc(l1,l2)

print(res)

37、猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多吃了一个。以后每天都吃前一天剩下的一半再加一个。到第 10 天刚好剩一个。问猴子第一天摘了多少个桃子?

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个桃子

s = 1

func = lambda x: (x + 1) * 2

for i in range(9):

s = func(s)

print(s)

输出:

1534

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值