python入门之 第八章 传递列表 知识和练习(2)

动手试一试
8-9  魔术师 :创建一个包含魔术师名字的列表,并将其传递给一个名为 show_magicians() 的函数,这个函数打印列表中每个魔术师的名字。
8-10  了不起的魔术师 :在你为完成练习 8-9 而编写的程序中,编写一个名为 make_great() 的函数,对魔术师列表进行修改,在每个魔术师的名字中都加入字样 “the
Great” 。调用函数 show_magicians() ,确认魔术师列表确实变了。
8-11  不变的魔术师 :修改你为完成练习 8-10 而编写的程序,在调用函数 make_great() 时,向它传递魔术师列表的副本。由于不想修改原始列表,请返回修改后的
列表,并将其存储到另一个列表中。分别使用这两个列表来调用 show_magicians() ,确认一个列表包含的是原来的魔术师名字,而另一个列表包含的是添加了字

样 “the Great” 的魔术师名字。

由于是新手,所以望大神见谅。8-10这题困扰了我很久,博客上的参考程序很多,但是我感觉,部分程序还是有问题,或者说是题目没有读清楚。为了解决可能遇到和我一样的问题,特此发帖。我写的程序并非最好。只是做了一些标记。运行结果能够很好的反应运行情况。进行反向学习。

# _*_ coding: utf-8 _*_

#8.9 魔术师
def show_magicians(names):
	"""传递用户,发出问候"""
	for name in names:
		msg="\nHello, "+name.title()+"!"
		print(msg)
magicians=['liu','zhang','xiao']
show_magicians(magicians)

#8.10 大魔术师
print("\n")
magicians=['liu','zhang','xiao']
def show_magicians(names):
	"""传递用户,发出问候"""
	for name in names:
		msg="Hello, "+name.title()+"!"
		print(msg)
def make_great(new_magicians):
	"""在每个魔术师名字前加上The great"""
	for i in range(3):
		magicians[i]="The Great "+magicians[i]
		print(i)	#i是从0开始,0,1,2三个数,标记运行情况
		print(magicians[i])
	return

print(magicians)	#输出的是原始列表数据
print("\n")
show_magicians(magicians)	#调用函数show_magicians,原始数据
print("\n")
make_great(magicians)	#调用修改函数make_great,原始数据改变
print("\n")
show_magicians(magicians)#调用函数,原始数据列表已经改变
print("\n")
print(magicians)	#输出的是改变的列表数据

#结论,调用函数先后顺序直接影响最终结果。思路要清晰。本题原意只是操作一个列表。


#8.11 大魔术师
print("\n")
def show_magicians(names):
	"""传递用户,发出问候"""
	for name in names:
		msg="Hello, "+name.title()+"!"
		print(msg)
def make_great(magicians,great_magicians):
	"""在每个魔术师名字前加上The great"""
	for magician in magicians:
		great_magician="The Great "+magician
		great_magicians.append(great_magician)
		print(great_magician)
	print("\n")
	print(great_magicians)
magicians=['liu','zhang','xiao']
great_magicians=[]
print("\n")
show_magicians(magicians)	#原列表未发生改变
print("\n")
make_great(magicians[:],great_magicians)	#原列表发生改变
print("\n")
show_magicians(magicians)	#原列表未发生改变,由于使用切片

由于程序写在一个py里面,还有程序为了输出能够清晰看到结果,因此加入转行符。

print("\n")


希望大家多交流。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值