3

私はpythonに非常に慣れていません。c ++とpythonのforループについて小さなクエリがありました。c、c ++ではi、以下の例に示すように変数を変更するiと、次の反復で新しい値が反映されますが、そうではありませんin for loop in python.So 、実際continueになどの関数を使用せずにいくつかの反復をスキップする必要がある場合に、Pythonでそれを処理する方法.

for loop in c++

for(int i=0;i<5;++i)
{   
   if(i==2)
    i=i+2;

   cout<<i<<endl;
}

Output

0

1

4

for loop in python

for i in range(5):
     if i==2:
        i=i+2
     print i

Output

0

1

4

3

4
4

5 に答える 5

7

C ++で反復変数を変更すると、コードがわかりにくくなるため、一般的にアドバイスします。

Pythonでは、反復処理する値が事前にわかっている場合(そして、それらの値が多すぎない場合)、それらのリストを作成できます。

for i in [0,1,4]:
    print i

もちろん、Pythonで反復変数を本当に変更する必要がある場合は、代わりにwhileループを使用できます。

i = 0
while i < 5:
    if i==2:
        i=i+2
    print i
    i = i + 1
于 2013-02-01T21:36:45.117 に答える
4

これは、Python では、ループの各反復で、変数iが の次の要素として選択されるためrange(5)です。しかし、C++ では、変数iはループ インクリメントループ内で発生するものの両方によって管理されます。

于 2013-02-01T21:31:12.087 に答える
1

i変数は、ループの反復ごとに反復子の出力に設定されていますrange(5)。ループ内で変更できますが、上書きされます。

于 2013-02-01T21:31:21.703 に答える
1

iは反復ごとにリセットされます。つまり、i への変更は次のループで無視されます。Daniel Fischer がコメントで述べたように、Python でこれを行う場合は、while ループを使用します。

それは次のようなものです:

for (int i = 0; i < 5; ++i) {
    int x = i;
    if (x == 2) {
        x = x + 2;
    }
    std::cout << x << std::endl;
}
于 2013-02-01T21:31:22.553 に答える
0

これはだからrange(5)です[0,1,2,3,4]for i in range(5)はだからfor i in [0,1,2,3,4]

于 2013-02-01T21:31:16.903 に答える