函数基础题小细节

 

1.魔术师:创建一个包含魔术师名字的列表,并将其传递给一个名为show_magicians()的函数,这个函数打印列表中每个魔术师的名字

解:

def show_magicians(magicians):

      for magician in magicians:#将列表中的值给临时变量magician达到遍历的目的

            print(magician)

​
magicians=['John','Mike','Aha']
show_magicians(magicians

​
结果:
John

Mike

Aha

 

2.了不起的魔术师:在完成第一个练习的基础上,编写一个make_great()的函数,对魔术师列表进行修改,在每个魔术师的名字中都加入字样:"the Great".调用函数show_magicians(),确认魔术师列表确实变了

错误示范:

def make_great(magicians):

    for magician in magicians:

          magician="the Great"+magicians.pop()#从后往前将列表元素+‘the Great’ 

        magicians.append(magician) #将改过后的元素再添加进去,此时元素的值就变成原来的值+‘the Great’



magicians=['John','Mike','Aha']

show_magicians(magicians)

make_great(magicians)

show_magicians(magicians)



结果:

John

Mike

Aha

John

Mike

the Greatthe Greatthe GreatAha #这里之所以会出错就是因为看起来是从后往前依次遍历但其实在删去最后一个元素的下一步就又将改过的元素放回了原来的列表中,所以其实一直改的就只有最后一个元素的值

 

修正后的代码:

i=0 #定义一个变量来储存位置信息,达到遍历的目的

def make_great(magicians):

    for i in range(0,len(magicians)): #控制变量的变化范围       

        magician=magicians.pop(i) #遍历改变 

        magician="the    Great"+'    '+magician      

        magicians.insert(i,magician)



magicians=['John','Mike','Aha']

show_magicians(magicians)

make_great(magicians)#分别调用观察是否达到目的

show_magicians(magicians)





结果:

John

Mike

Aha

the Great John

the Great Mike

the Great Aha


3. 不变的魔术师:修改之前的程序,在调用函数make_great()时,向它传递魔术师列表的副本。由于不想修改原始列表,请返回修改后的列表,将其储存到另一个列表中。分别使用这两个列表来调用show_magicians( ),确认一个列表包含的是原来魔术师的名字,而另一个列表包含的是添加了字样的名字

解答:

def show_magicians(magicians):

     for magician in magicians:

           print(magician)





i=0 #定义一个变量来储存位置信息,达到遍历的目的

def make_great(magicians):

       for i in range(0,len(magicians)): #控制变量的变化范围 

             magician=magicians.pop(i) #遍历改变 

             magician="the Great"+' '+magician magicians.insert(i,magician)

       return magicians #这里记得要有返回值,而且注意return所在行的缩进,在for循环进行完之后返回





magicians=['John','Mike','Aha']

show_magicians(magicians)#确保创建列表正确,好习惯!

print('\n')

another_magicians=make_great(magicians[:])#传递切片,不更改原来的列表,且创建另一个列表来存储改变后的列表show_magicians(magicians)#分别调用输出函数,观察原来的列表是否发生变化,更改后的列表是否发生更改

print('\n')

show_magicians(another_magicians)







结果:
John

Mike

Aha



John

Mike

Aha







the Great John

the Great Mike

the Great Aha

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值