为什么我的双循环会打印出一个奇怪的值

时间:2019-02-21 18:15:30

标签: python loops

编辑:我在移动设备上,格式不正确。这是我第一次遇到堆栈溢出

我是编程的新手,甚至不知道该如何表达和搜索我想回答的问题

运行此命令时:

Magicians = ['kory', 'bob', 'jamie', 'cody']
for Magicians in Magicians:
    print(Magicians)
for Magicians in Magicians:
    print(Magicians)

我明白了:     高丽     鲍勃     杰米     科迪     C     Ø     d     y

有人可以帮我理解吗?我正在阅读Eric Matthes撰写的python速成课程,它没有涵盖任何内容,我也无法弄清

谢谢

3 个答案:

答案 0 :(得分:1)

您的第一个循环表示将Magicians拆分为多个项目,因此第一个迭代将是“ kory”。您的下一个循环(由于未嵌套,仅对最后一个值“ cody”运行)被告知将其进一步拆分为多个项。它通过采用字符串“ cody”并将其拆分为字母来实现。然后打印每个字母!

您可以尝试以下操作:

Magicians = ['kory', 'bob', 'jamie', 'cody']
for Magician in Magicians:
    print(Magician)
    for letter in Magician:
        print(letter)

这将打印“ kory k o r y bob b o b jamie j a me e cody c o d y”,我认为这实质上是您要尝试做的事。

答案 1 :(得分:0)

它打印c o d y是因为在最后一个循环中,您使用了变量Magicians作为迭代变量。因此,第一个循环之后的Magicians等于字符串"cody"。在python中,您可以将字符串作为列表进行迭代,这就是为什么在第二个循环中,您会得到"cody"字母的原因。

Magicians = ['kory', 'bob', 'jamie', 'cody']
for Magicians in Magicians:
    print(Magicians)
# Prints: kory   bob  jaime  cody
#Now Magicians = 'cody'
for Magicians in Magicians:
    print(Magicians)
#Prints: c o d y

答案 2 :(得分:0)

简单的列表理解可以帮助您了解循环的工作原理

这将吐出列表Magicians

中每个machigian的所有字符
Magicians = ['kory', 'bob', 'jamie', 'cody']
[[char for char in magician] for magician in Magicians]

输出:

[['k', 'o', 'r', 'y'],
 ['b', 'o', 'b'],
 ['j', 'a', 'm', 'i', 'e'],
 ['c', 'o', 'd', 'y']]