首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >8-10: python crash课程中未变的魔术师

8-10: python crash课程中未变的魔术师
EN

Stack Overflow用户
提问于 2021-05-30 16:56:42
回答 1查看 19关注 0票数 0

我自己为这个任务编写了代码,如下所示:

代码语言:javascript
复制
def showmagicians(magician_names):
    for name in magician_names:
        print(name)

def make_great(magician_names):
    the_greats = []
    **for name in magician_names:**
        the_great = name +'_the_great'
        pop_name = magician_names.pop()
        the_greats.append(the_great)
    for the_great in the_greats:
        magician_names.append(the_great)
    return magician_names

magician_names = ['harry','david']
showmagicians(magician_names)
make_great(magician_names)
print(magician_names)

**Output:
harry
david
['harry', 'harry_the_great']**

我没有在‘make_great function’中使用'while‘语句,而是使用了'for’语句,并且输出是错误的。但我看不出这两者之间有什么区别。

该任务要求我们输出带有'the great‘后缀的'magician_names’。这本书提供的代码在这里列出:https://ehmatthes.github.io/pcc/solutions/chapter_8.html#8-6-city-names谁能告诉我有什么区别?

EN

回答 1

Stack Overflow用户

发布于 2021-05-30 17:02:40

您正在magician_names上迭代,因此向前移动 pop (删除项),因此向后移动

harry

  • pop上,删除david

  • cursor列表是['harry', 'david']游标,因此
  • 没有其他地方可移动,您只需在harry

上迭代

让您的方法make_great返回the_greats列表,并将其赋给主代码中的一个变量,这样就很好了

代码语言:javascript
复制
def make_great(magician_names):
    the_greats = []
    for name in magician_names:
        the_great = name + '_the_great'
        the_greats.append(the_great)
    return the_greats


magician_names = ['harry', 'david']
print(magician_names)  # ['harry', 'david']
magician_names = make_great(magician_names)
print(magician_names)  # ['harry_the_great', 'david_the_great']

列表理解版本

代码语言:javascript
复制
def make_great(magician_names):
    return [name + '_the_great' for name in magician_names]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67759428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档