5

私はPythonの初心者で、いくつかのプログラムを試しています。Pythonで次のWHILEループ構造のようなものがあります(正確ではありません)。

IDLE 2.6.4      
>>> a=0
>>> b=0
>>> while a < 4:
      a=a+1
      while b < 4:
         b=b+1
         print a, b


1 1
1 2
1 3
1 4

外側のループが1、2、3、4をループすることを期待しています。そして、このようなFORループでこれを実行できることを知っています。

>>> for a in range(1,5):
       for b in range(1,5):
           print a,b


1 1
1 2
.. ..
.. .. // Other lines omitted for brevity
4 4

しかし、WHILEループの何が問題になっていますか?明らかなことが欠けていると思いますが、理解できませんでした。

回答: 修正されたWHILEループ。

>>> a=0
>>> b=0
>>> while a < 4:
    a=a+1
    b=0
    while b<4:
        b=b+1
        print a,b


1 1
.. ..
.. .. // Other lines omitted for brevity
4 4

PS:SOを検索しましたが、いくつかの質問が見つかりましたが、これに近いものはありませんでした。これが宿題に分類できるかどうかわからない、実際のプログラムは異なっていた、問題は私を困惑させるものです。

4

1 に答える 1

7

b外側のループのすぐ内側で0にリセットされていないため、外側のループbの最初のレッグ(4)の後の値にとどまり、内側のループが再び実行されることはありません。

ループはループ制御変数を正しくリセットするforため、正常に機能します。構造化されていないwhileループでは、そのようなリセットはあなたの手にあり、あなたはそれをしていません。

于 2010-05-15T19:40:13.337 に答える