这是我在下面编写的代码示例:
animals = ['rat', 'fish', 'fool', 'cat', 'lion']
for animals in animals:
print('i am a ' + animals)
print('\n \n')
for animals in animals:
print('i am a ' + animals)
print('\n \n')
for animals in animals:
print('i am a ' + animals)
print('\n \n')
for animals in animals:
print('i am a ' + animals)
问题是:第一个“打印”命令可以正确打印,但是下一个“ for,in,print”命令可以循环遍历数组中“狮子”的每个字母,随后的打印命令仅对最后一个重复“ n” “狮子”中的字母...
我编写的代码有问题吗?有人知道发生了什么吗?任何帮助或指导将不胜感激。
谢谢
答案 0 :(得分:1)
这是因为您的迭代变量与列表的名称相同。
在您的第一个for循环结束时,“动物”变成“狮子”。
因此,第二个循环经过“狮子”。同样,在第二个循环结束时,变量变为“ n”。
答案 1 :(得分:0)
每次进入for循环时,您都在重新分配变量“ animals”。因此,在第一个循环结束时,动物不再是您的列表,而是字符串“狮子”。在第二个循环的末尾,动物被分配给字符串“ n”,并在最后一个循环中保持这种状态。如果您按如下所示对代码进行修改,那将始终是相同的:
animals = ['rat', 'fish', 'fool', 'cat', 'lion']
for animal in animals:
print('i am a ' + animal)
print('\n \n')
for animal in animals:
print('i am a ' + animal)
print('\n \n')
for animal in animals:
print('i am a ' + animal)
print('\n \n')
for animal in animals:
print('i am a ' + animal)
答案 2 :(得分:0)
这是因为您的迭代器具有与列表相同的名称,因此您应该将其重命名为animal
:
animals = ['rat', 'fish', 'fool', 'cat', 'lion']
for animal in animals:
print('i am a ' + animal)
print('\n \n')
for animal in animals:
print('i am a ' + animal)
print('\n \n')
for animal in animals:
print('i am a ' + animal)
print('\n \n')
for animal in animals:
print('i am a ' + animal)
答案 3 :(得分:0)
这是因为您在所有for循环中都使用for animals in animals:
,这意味着lion
将在第一个for循环结束时存储在animals
中,并被馈送到第二个一个等等。
您必须使用for animal in animals:
答案 4 :(得分:0)
您在列表和索引变量中使用了相同的变量名,最后一个变量分配给了animals
,下一个循环在lion
上以animals
的值运行,并且不是您想要的列表。您应该这样做
for animal in animals:
我编写的代码有问题吗?
实际上有很多事情。 我相信您想在换行上打印每个动物的名称,从而尝试for循环。现在循环的重点是减少代码冗余。但是,您已经为循环编写了四遍,这违反了循环的目的。
答案 5 :(得分:0)
此:
for animals in animals:
print(animals)
实际上等效于:
for i in range(len(animals)):
animals = animals[i]
print(animals)
如您所见,它重新绑定了名称animals
,因此在循环animals
之后指向原始列表的最后一项(在您的情况下为字符串"lion"
)。由于字符串是可迭代的,因此第二个for循环迭代animals
中的各个字母(现在指向字符串"lion"
),因此在第二个循环之后,animals
现在指向最后一个"lion"
中的字母,即"n"
。现在,随后的循环都遍历(一个字母)字符串"n"
。