嵌套for语句的python和c ++结果不同

时间:2019-03-26 08:44:58

标签: python c++

我正在用c ++和python编写算法。

算法是输出when n = 7, (0,1,2,3), (0,1,2,4) ... (3,4,5,6),我是通过嵌套的for语句实现的,但是c ++和python的值是不同的。

你能告诉我为什么吗?

例如,当我在范围内使用i时,我是否总是从0开始?如果可以设置range()的初始值,请告诉我。

C ++

for(int i = 0; i < n; ++i)
        for(int j = i+1; j < n; ++j)
            for(int k = j+1; k < n; ++k)
                for(int l = k+1; l < n; ++l)
                    cout << i << " " << j << " " << k << " " << l << endl;

Python

for i in range(0, n):
        for j in range(i+1, n):
            for k in range(i+2, n):
                for l in range(i+3, n):
                    print(i, j, k, l)

2 个答案:

答案 0 :(得分:0)

由@khelwood提供:

您的k在C ++代码中以j+1开始,在Python代码中以i+2开始。您的l起始值也不一致。代码不相同。

此外,您可以在range()

中添加初始值作为第一个参数。

答案 1 :(得分:0)

循环中的索引不同:

for(int k = j+1; k < n; ++k)
for(int l = k+1; l < n; ++l)

 for k in range(i+2, n):
 for l in range(i+3, n):

基本上,C ++代码的内部循环中的索引会相应地更改为位于其上一行的循环。在您的python代码中,所有索引仅在第一个循环更改时更改。