python三次方函数_python函数基础------第三次作业讲解(二)

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

第一个:

a = 'oldboy %'

print(a)

ContractedBlock.gif

ExpandedBlockStart.gif

输出:

oldboy%

View Code

第二个:

a = 'oldboy %d %%' %(12,)

print(a)

ContractedBlock.gif

ExpandedBlockStart.gif

输出:

oldboy12 %

View Code

19、简述对象和类的关系

ContractedBlock.gif

ExpandedBlockStart.gif

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

View Code

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

def func(a1):

return a1 + 100

func = lambda a1:a1+200

ret = func(10)

print(ret)

ContractedBlock.gif

ExpandedBlockStart.gif

输出:210

View Code

匿名函数那一句把func变量覆盖了

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

ContractedBlock.gif

ExpandedBlockStart.gif

all:如果是空的,返回True,如果非空,返回False,全真为真否则为假

any:有一个真就为真

View Code

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

ContractedBlock.gif

ExpandedBlockStart.gif

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

rb是以二进制格式打开

View Code

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

ContractedBlock.gif

ExpandedBlockStart.gif

内存里只有一种编码(unicode),字节是在磁盘和传输的过程才有意义

方法一:

s= '老男人'

print(bytes(s,'utf-8'))

输出:

b'\xe8\x80\x81\xe7\x94\xb7\xe4\xba\xba'方法二:

s= '老男人'

print(s.encode('utf-8'))

输出:

b'\xe8\x80\x81\xe7\x94\xb7\xe4\xba\xba'

View Code

24、略

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

ContractedBlock.gif

ExpandedBlockStart.gif

globals() 获取所有的全局变量

locals() 获取所有局部变量

View Code

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'

ContractedBlock.gif

ExpandedBlockStart.gif

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('_'.join(list(zip(l1,l2,l3,l4))[0]))

输出:

alex_is_good_guy

View Code

27、略

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

namelist = ['alex','eric']

def func():

namelist = 123

global namelist

func()

print(namelist)

ContractedBlock.gif

ExpandedBlockStart.gif

输出:

SyntaxError: name'namelist' is assigned to before globaldeclaration

(global声明要写在前面才行)

View Code

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

第一个:

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)

ContractedBlock.gif

ExpandedBlockStart.gif

root

root

None

root

View Code

第二个:

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)

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

root

None

root

None

root

View Code

第三个:

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)

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

root

None

懵逼了吧

None

懵逼了吧

View Code

第四个:略

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

第一个:

name = 'canglaoshi'

def outer(func):

name = 'alex'

func() #函数名字可以作为参数传递

def show():

print(name)

outer(show)

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

canglaoshi

把show传入outer函数之后,func()和show()指向同一块函数体,也就是print(name)

第二个:

View Codename = 'canglaoshi'

def outer():

name = 'boduo'

def inner():

print(name)

return inner() #在这里执行没有意义

ret = outer()

print(ret)

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

boduo

None

View Code

第三个:

name = 'canglaoshi'

def outer():

name = 'boduo'

def inner():

print(name)

return inner

ret = outer()

ret() #boduo

print(ret) #.inner at 0x000001719D9F3620>

result = ret()

print(result)

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

boduo.inner at 0x000001719D9F3620>boduo

None

inner被复制给了变量ret

View Code

第四个:

name = 'canglaoshi'

def outer():

name = 'boduo'

def inner():

print(name)

return inner #返回内存地址

ret = outer()

print(ret)

result = ret() #执行inner函数,打印boduo

print(result) #inner无返回值,打印的是None

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

.inner at 0x0000025F44221620>boduo

None

View Code

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

第一种:

#利用递归实现1*2*3*4*5*6*7=5040(我自己写的代码)

def func(end,s=1,begin=1):

if begin>end:

return s

s *=begin

begin +=1

return func(end,s,begin)

print(func(7))

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

5040

View Code

第二种:(上一种方法写的不好,因为传一个参数其实就够了)

ContractedBlock.gif

ExpandedBlockStart.gif

deff(n):if n == 1:return 1

return n * f(n - 1)print(f(7))

View Code

(reduce+lambda写法)

from functools import reduce

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

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

5040

View Code

35、写程序

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

ContractedBlock.gif

ExpandedBlockStart.gif

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

View Code

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

原文件内容:

文件a:

123

abc

文件b:

456

efg

运行代码:

with open('a','r') as x,open('b','w') as y:

y.write(x.read())

运行后的文件:

文件a:

123

abc

文件b:

123

abc

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

问猴子第一天摘了多少个桃子?

s=1

for i in range(9):

s = (s+1)*2

print(s)

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

1534

View Code

或者用匿名函数:

s=1

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

for i in range(9):

s = func(s)

print(s)

输出:

ContractedBlock.gif

ExpandedBlockStart.gif

1534

View Code

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值