0

假设这个 for 循环在C/C++

int start_value = 10;
int end_value = 20;
for(int i=start_value;i<end_value;i++)
  cout << i;

如果start_value大于end_value循环将不会迭代。如何在“Python”中写同样的东西?

4

4 回答 4

3

在 python 3.x 中

start_value = 10;
end_value = 20;
for i in range(start_value, end_value):
  print(i)

在 python 2.x 中

start_value = 10;
end_value = 20;
for i in xrange(start_value, end_value):
  print i
于 2013-07-21T09:56:31.783 回答
1

您可以使用以下range()功能:

start_value = 10
end_value = 20
for i in range(start_value, end_value):
    print i # Or print(i) in Python 3

range(10, 20)返回:

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

请注意,如果您使用的是 python 3,range()将返回一个迭代器(但是输出仍然相同)。这也可以在 python 2 中通过使用xrange(). 它主要用于性能优势。

在python中,循环结束时不需要做i += 1,因为for循环会在循环之后自动转到列表中的下一项。

于 2013-07-21T09:56:54.363 回答
1
>>> start_value = 10;
>>> end_value = 20;
>>> 
>>> for i in xrange(start_value, end_value):
...     print i,
... 
10 11 12 13 14 15 16 17 18 19
>>> 
>>> start_value = 21;
>>> 
>>> for i in xrange(start_value, end_value):
...     print i,
... 
>>> 
于 2013-07-21T09:56:57.107 回答
0

习惯上,从 C/C++ 到 Python 2 的翻译将正确地遵循如下:

start_value = 10
end_value = 20
for i in range(start_value, end_value):
    print i

语义上虽然它与 C/C++ for 循环有点不同。Pythonfor循环是编程中通常所说的for each循环。

For each(或 foreach)是一种用于遍历集合中项目的计算机语言习语。

这些在 Python 中支持遍历的集合称为iterables

然而,与其他 for 循环结构不同的是,foreach 循环通常不维护明确的计数器:它们本质上说“对这个集合中的所有内容执行此操作”,而不是“执行此操作 x 次”。

您的 C/C++ 代码是正确意义上的for循环示例。

与许多其他类型的循环(例如 while 循环)不同,for 循环通常通过显式循环计数器来区分。

所以rangeorxrange内置函数可以在 Python for 循环中使用来模拟循环计数器的效果。

这实际上更接近 C/C++ 示例的语义:

start_value = 10
end_value = 20
i = start_value
while i < end_value:
    print i
    i += 1

将类似的东西翻译for (int i=1; stopCondition(i); i++)成 Python 并不那么直接,需要一个if语句和break.

这将是 Python for 循环示例使用range.

start_value = 10
end_value = 20
iterable = range(start_value, end_value)
iterator = iter(iterable)
while True:
    try:
        i = iterator.next()
        print i
    except StopIteration:
        break
于 2013-07-21T16:18:50.347 回答