• 全部
  • 互动交流
  • 文章分享

想咨询一下,为什么通过下面 for 的形式没有办法 在 各个姓名前面加 the great呢

lyw2073327 2020-11-10 07:00:08
这是书上的一个练习题,要在每个魔术师名字前面加 the great,并且调用 def show_magicians(old_magics) 的内容来输出,有看过例子是通过while i < len()的方式来操作的,然后就想了解一下通过for的形式为什么无法调用呢,我这个代码的问题出在哪里呢

def show_magicians(old_magics):
for magic_name in old_magics:
print(magic_name)


def make_great(old_magics):
for old_magic in old_magics:
old_magic = 'the great '.title() + old_magic
return old_magics


k = ['Ketty', 'Jerry', 'Max', 'Tom']
make_great(k)
show_magicians(k)
...全文
98 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2020-11-11
你代码的问题在于: make_great中的 old_magic是old_magics中每个零件的复制品,然后将每个复制品用the great加了下工 你应该是理解成了,old_magic是从old_magics中取出的零件,加完工后再给old_magics安上去了。 取出来加工后再安上去用的是二楼的或者直接用列表推导式.
回复
Bedmound 2020-11-11
楼上的make_great 不需要返回值
回复
lyw2073327 2020-11-11
不好意思还有一点,就是 while i < len(new_magics) 这个应该怎么理解呢 def make_great(new_magics): i = 0 while i < len(new_magics): new_magics[i] = 'the great '.title() + new_magics[i]
回复
lyw2073327 2020-11-11
好像有点明白了,for函数的就是通过for来循环引用old_magics里的数据,而while函数则通过 i += 1 的方式来循环引用,那这样的话还有一点疑问,就是如果通过for函数的话,是不是一定要通过 for i,old_magic in enumerate(old_magics) 的形式(即要设置enumerate函数来获取索引和对象),否则光靠 for 函数是无法实现引用输出的呢
回复
lyw2073327 2020-11-11
@chuifengde@欢乐的小猪 了解了,另外我看到网上还有一种做法是这样(如下),这个代码里 new_magics[i] = 'the great '.title() + new_magics[i] ,是前后都有 [i],这个[i] 我应该怎么理解比较好呢 def make_great(new_magics): i = 0 while i < len(new_magics): new_magics[i] = 'the great '.title() + new_magics[i] i += 1 # 也可以写成 i = i+1 return new_magics
回复
欢乐的小猪 2020-11-10
def show_magicians(old_magics):
    for magic_name in old_magics:
        print(magic_name)


def make_great(old_magics):
    for i,old_magic in enumerate(old_magics) :
        old_magics[i] = 'the great '.title() + old_magic
    return old_magics


k = ['Ketty', 'Jerry', 'Max', 'Tom']
make_great(k)
show_magicians(k)
回复
发帖
脚本语言
创建于2007-08-27

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2020-11-10 07:00
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: