Iteration WAS在我的脚本中工作,现在我不能让python迭代 - 发生了什么?

时间:2009-12-28 15:18:05

标签: python

我的python ide坏了吗?

import sys

i = 0
sample = ("this", "is", "Annoying!")

for line in sample:
    print i, line
    i + 1

现在给我......

0 this 
0 is 
0 Annoying!

我想,它会给我:

1 this 
2 is 
3 Annoying

我还有其他正在处理的脚本,而且它们都破坏了 - 当使用for语句打印多次迭代时,它们都具有相同的行号 - 有人可以告诉我发生了什么 - 非常沮丧大笑...... Python打破了吗?我需要睡觉吗?这有什么不对?

8 个答案:

答案 0 :(得分:10)

虽然其他答案是正确的,但这是你通常在python中执行此操作的方法:

sample = ("this", "is", "Annoying!")

for i, line in enumerate(sample):
    print i, line

enumerate函数完全符合您的要求:迭代您的元组,同时为您提供(行)数字。

答案 1 :(得分:7)

您正在计算i+1,但不会将结果存储在任何位置。具体而言,您没有更新i以包含新值。请改用i = i + 1i += 1

答案 2 :(得分:4)

这对我来说很好用:

>>> import sys
>>> i = 0
>>> sample = ("abc", "def", "ghi")
>>> for line in sample:
...   i = i + 1
...   print i, line
... 
1 abc
2 def
3 ghi

您确定要增加并存储值i吗? (你的例子省略了这个,但在另一个答案中你说你确实放了i = i + 1。)请记住,Python是对空格敏感的,所以如果你做了这样的事情,结果将不是你所期望的:

>>> for line in sample:
...   print i, line
... i = i + 1 # <-- This is not part of the loop!

答案 3 :(得分:4)

我怀疑你有一个缩进问题,也许i = i + 1语句在某种程度上不是for循环的一部分。

但是,不要做自己的计数器递增,更好的做法是使用枚举:

for i,line in enumerate(sample):
    print i,line

答案 4 :(得分:3)

问题是你在做“i + 1”,而不是“i = i + 1”

答案 5 :(得分:2)

您没有在代码中增加变量i,您需要执行以下操作:

for line in sample:
    i = i + 1
    print i, line

答案 6 :(得分:2)

您期望的结果将通过使用枚举:

获得
sample = ("this", "is", "Annoying!")
for index, line in enumerate(sample):
    print index, line

我不知道你发布的代码在任何版本的Python中都有用。

答案 7 :(得分:0)

只需单步执行调试程序即可查看执行情况。