【发布时间】:2012-01-21 16:01:30
【问题描述】:
C:
# include <stdio.h>
main()
{
int i;
for (i=0; i<10; i++)
{
if (i>5)
{
i=i-1;
printf("%d",i);
}
}
}
Python:
for i in range(10):
if i>5: i=i-1
print(i)
当我们编译 C 代码时,它会进入一个无限循环,永远打印 5,而在 Python 中不会,为什么不呢?
Python 输出为:
0 1 2 3 4 5 5 6 7 8
【问题讨论】:
-
@spatz 是对的。如果出于某种原因您仍想在 python 中执行此操作,请使用
while循环 -
您的问题的答案是“因为它们是不同的语言”。他们不应该以相同的方式工作。如果它们的工作方式相同,它们将是相同的语言。
-
出现这种情况的原因是,在 C 风格的代码中,您经常需要实际的数字
i,您可以使用它来索引某些数据结构或其他。在 Python 等高级代码中,您通常不希望这样做;迭代将由您要迭代的对象处理。 -
因为Python和C是不同的语言有不同的semantics