Python基礎チュートリアル(四):ループ文


Pythonループ文
この章では、Pythonのループ文について説明します.プログラムは一般的に順番に実行されます.
プログラミング言語は、より複雑な実行パスを可能にする様々な制御構造を提供します.
ループ文を使用すると、1つの文または文グループを複数回実行できます.次に、ほとんどのプログラミング言語のループ文の一般的な形式を示します.
Pythonはforループとwhileループを提供します(Pythonにはdo..whileループはありません):
ループタイプ
説明
whileサイクル
与えられた判定条件がtrueの場合にループを実行し、そうでなければループを終了する.
forサイクル
繰り返し実行文
ネストされたループ
whileサイクルでforサイクルをネストできます
 
ループ制御文
ループ制御文は、文の実行順序を変更します.Pythonでは、次のループ制御文がサポートされています.
せいぎょぶん
説明
break文
文ブロックの実行中にループを終了し、ループ全体から飛び出します.
continue文
文ブロックの実行中に現在のループを終了し、そのループから飛び出して次のループを実行します.
pass文
passは空の文であり,プログラム構造の整合性を保つためである.
 
 
Python Whileループ文
Pythonプログラミングでは、while文をループ実行プログラムに使用します.すなわち、ある条件下で、繰り返し処理が必要な同じタスクを処理するために、あるプログラムをループ実行します.基本形式は次のとおりです.
while     :
        ……

実行文は、単一の文または文ブロックであってもよい.判断条件は、ゼロ以外の値、またはnull以外の値がtrueである任意の式であってもよい.
条件偽falseを判断するとループは終了する.
実行フローチャートは次のとおりです.
例:
#!/usr/bin/python
 
count = 0
while (count < 9):
   print 'The count is:', count
   count = count + 1
 
print "Good bye!"

以上のコードは出力結果を実行します.
The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!

while文にはもう2つの重要なコマンドcontinueがあり、breakはループをスキップし、continueはこのループをスキップし、breakはループを終了するために使用され、また「判断条件」は定数値であり、ループが必ず成立することを示し、具体的な使い方は以下の通りである.
# continue   break   
 
i = 1
while i < 10:   
    i += 1
    if i%2 > 0:     #         
        continue
    print i         #     2、4、6、8、10
 
i = 1
while 1:            #      1    
    print i         #   1~10
    i += 1
    if i > 10:     #  i  10     
        break
 

 
むげんループ
条件判定文が常にtrueの場合、ループは無限に実行されます.次の例です.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
var = 1
while var == 1 :  #       true,         
   num = raw_input("Enter a number  :")
   print "You entered: ", num
 
print "Good bye!"

上記の例は、結果を出力します.
Enter a number  :20
You entered:  20
Enter a number  :29
You entered:  29
Enter a number  :3
You entered:  3
Enter a number between :Traceback (most recent call last):
  File "test.py", line 5, in <module>
    num = raw_input("Enter a number :")
KeyboardInterrupt

注意:以上の無限ループはCTRL+Cを使用してループを中断することができます.
 
else文のループ
pythonではfor...elseはこのような意味を表し、forの中の文は普通の文と変わらず、elseの中の文はループが正常に実行された(すなわちforはbreakジャンプで中断されたものではない)場合に実行され、while...elseも同じである.
#!/usr/bin/python
 
count = 0
while count < 5:
   print count, " is  less than 5"
   count = count + 1
else:
   print count, " is not less than 5"

上記の例の出力結果は次のとおりです.
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5

 
単純文グループ
if文のような構文で、whileループに文が1つしかない場合は、whileと同じ行に文を書くことができます.以下に示します.
#!/usr/bin/python
 
flag = 1
 
while (flag): print 'Given flag is really true!'
 
print "Good bye!"

注意:以上の無限ループはCTRL+Cを使用してループを中断することができます.
 
 
Python forループ文
Python forループは、リストや文字列などの任意のシーケンスのアイテムを巡回することができます.
構文:
forループの構文フォーマットは次のとおりです.
for iterating_var in sequence:
   statements(s)

フローチャート:
例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
for letter in 'Python':     #      
   print '     :', letter
 
fruits = ['banana', 'apple',  'mango']
for fruit in fruits:        #      
   print '     :', fruit
 
print "Good bye!"

上記の例は、結果を出力します.
     : P
     : y
     : t
     : h
     : o
     : n
     : banana
     : apple
     : mango
Good bye!

 
シーケンスインデックス反復
もう1つのループを実行する方法は、次の例のようにインデックスによって行われます.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
   print '     :', fruits[index]
 
print "Good bye!"

上記の例は、結果を出力します.
     : banana
     : apple
     : mango
Good bye!

上記の例では、組み込み関数len()とrange()を使用し、関数len()はリストの長さ、すなわち要素の個数を返します.rangeはシーケンスの数を返します.
 
else文のループ
pythonではfor...elseはこのような意味を表し、forの中の文は普通の文と変わらず、elseの中の文はループが正常に実行された(すなわちforはbreakジャンプで中断されたものではない)場合に実行され、while...elseも同じである.
次の例を示します.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
for num in range(10,20):  #    10   20      
   for i in range(2,num): #       
      if num%i == 0:      #        
         j=num/i          #        
         print '%d    %d * %d' % (num,i,j)
         break            #       
   else:                  #     else   
      print num, '     '

上記の例は、結果を出力します.
10    2 * 5
11      
12    2 * 6
13      
14    2 * 7
15    3 * 5
16    2 * 8
17      
18    2 * 9
19      

 
 
Pythonループネスト
Python言語では、あるループに別のループを埋め込むことができます.
Pythonforループネスト構文:
for iterating_var in sequence:
   for iterating_var in sequence:
      statements(s)
   statements(s)

Pythonwhileループネスト構文:
while expression:
   while expression:
      statement(s)
   statement(s)

whileサイクルにforサイクルを埋め込むなど、サイクル内に他のサイクルを埋め込むことができます.逆に、forサイクルにwhileサイクルを埋め込むことができます.
例:
次の例では、ネストされたループ出力2~100の素数を使用します.
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
i = 2
while(i < 100):
   j = 2
   while(j <= (i/j)):
      if not(i%j): break
      j = j + 1
   if (j > i/j) : print i, "    "
   i = i + 1
 
print "Good bye!"

上記の例は、結果を出力します.
2    
3    
5    
7    
11    
13    
17    
19    
23    
29    
31    
37    
41    
43    
47    
53    
59    
61    
67    
71    
73    
79    
83    
89    
97    
Good bye!

 
 
Python break文
Python break文は、C言語のように、最小閉鎖forまたはwhileループを破った.
break文は、ループ文を終了するために使用されます.すなわち、ループ条件にFalse条件がないか、シーケンスが完全に再帰されていないか、ループ文の実行が停止します.
break文はwhileとforループで使用されます.
ネストされたループを使用すると、break文は最も深いループの実行を停止し、次の行のコードの実行を開始します.
Python言語break文構文:
break

フローチャート:
例:
#!/usr/bin/python
 
for letter in 'Python':     # First Example
   if letter == 'h':
      break
   print 'Current Letter :', letter
  
var = 10                    # Second Example
while var > 0:              
   print 'Current variable value :', var
   var = var -1
   if var == 5:
      break
 
print "Good bye!"

上記の例の実行結果:
Current Letter : P
Current Letter : y
Current Letter : t
Current variable value : 10
Current variable value : 9
Current variable value : 8
Current variable value : 7
Current variable value : 6
Good bye!

 
 
Python continue文
Python continue文は今回のループから飛び出し、breakはループ全体から飛び出します.
continue文は、Pythonに現在のループの残りの文をスキップし、次のループを継続するように伝えるために使用されます.
continue文はwhileとforループで使用されます.
Python言語continue文の構文フォーマットは次のとおりです.
continue

フローチャート:
例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
for letter in 'Python':     #      
   if letter == 'h':
      continue
   print '     :', letter
 
var = 10                    #      
while var > 0:              
   var = var -1
   if var == 5:
      continue
   print '      :', var
print "Good bye!"

上記の例の実行結果:
     : P
     : y
     : t
     : o
     : n
      : 9
      : 8
      : 7
      : 6
      : 4
      : 3
      : 2
      : 1
      : 0
Good bye!

 
 
Python pass文
Python passは空の文であり,プログラム構造の整合性を保つためである.
passassは何もしないで、一般的に占位文として使われています.
Python言語pass文の構文フォーマットは次のとおりです.
pass

例:
#!/usr/bin/python
# -*- coding: UTF-8 -*- 
 
#    Python      
for letter in 'Python':
   if letter == 'h':
      pass
      print '   pass  '
   print '     :', letter
 
print "Good bye!"

上記の例の実行結果:
     : P
     : y
     : t
   pass  
     : h
     : o
     : n
Good bye!

  :http://www.runoob.com/python/python-tutorial.html