この章では、Pythonループステートメントの使用方法をご紹介します。
Pythonのループステートメントには、forとwhileが含まれています。
Pythonループステートメントの制御構造図は次のとおりです。
目次
whileループ
Pythonでのwhileステートメントの一般的な形式:
while判定条件(condition):
ステートメント(statements)……
実行フローチャートは次のとおりです。
次にはGifで表示します。
また、コロンとインデントにも注意を払う必要があります。さらに、Pythonにはdo..whileループはありません。
次の例では、whileを使用して1から100の合計を計算します。
#!/usr/bin/env python3
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 から %d までの合計は: %d" % (n,sum))
結果は次のとおりです。
1から100の合計は:5050
無限ループ
条件式を永遠にfalseにならないのを設定することで、無限ループを実現できます。例は次のとおりです。
#!/usr/bin/python3
var = 1
while var == 1 : # 条件式はtrueである
num = int(input("数字一つを入力する :"))
print ("入力した数字は: ", num)
print ("Good bye!")
上記のスクリプトを実行すると、出力結果は次のようになります。
数字一つを入力する:5
入力した数字は:5
数字一つを入力する:
CTRL + Cを使用して、現在の無限ループを終了できます。
無限ループは、サーバーでのクライアントのリアルタイムのリスペクトに非常に役立ちます。
whileループはelseステートメントを使用する
while…elseは、条件ステートメントがfalseの場合にelseのステートメントブロックを実行します。
構文形式は次のとおりです。
while <expr>:
<statement(s)>
else:
<additional_statement(s)>
ループで数値を出力し、大きさを判断します。
実例
#!/usr/bin/python3
count = 0
while count < 5:
print (count, " 小なり5")
count = count + 1
else:
print (count, " 大なり或いはイコール 5")
上記のスクリプトを実行すると、出力結果は次のようになります。
0 小なり5
1 小なり5
2 小なり5
3 小なり5
4 小なり5
5 大なり或いはイコール 5
簡単なステートメントのグループ
ifステートメントの構文と同様に、whileループの本体にステートメントが1つしかない場合は、次に示すように、whileと同じ行にステートメントを記述してください。
実例
#!/usr/bin/python
flag = 1
while (flag): print ('初心者教程へようこそ!')
print ("Good bye!")
注意:CTRL + Cを使用して、上記の無限ループを中断できます。
上記のスクリプトを実行すると、出力結果は次のようになります。
初心者教程へようこそ!
初心者教程へようこそ!
初心者教程へようこそ!
初心者教程へようこそ!
初心者教程へようこそ!
……
forステートメント
Pythonのforループは、リストや文字列など、任意のシーケンのスアイテムを検索できます。
forループの一般的な形式は次のとおりです。
for <variable> in <sequence>:
<statements>
else:
<statements>
フローチャート
Python forループ
>>>languages = ["C", "C++", "Perl", "Python"]
>>> for x in languages:
... print (x)
...
C
C++
Perl
Python
>>>
以下のfor 実例では、breakステートメントを使用し、breakステートメントを使用して現在のループ本体からジャンプします。
#!/usr/bin/python3
sites = ["eBay", "Google","Ceodata","Yahoo"]
for site in sites:
if site == "Ceodata":
print("初心者教程!")
break
print("ループデータ " + site)
else:
print("ループデータがない!")
print("ループ完了!")
スクリプトを実行した後、ループが「Runoob」に達すると、スクリプトはループからジャンプします。
ループデータeBay
ループデータGoogle
初心者教程!
ループ完了!
range()関数
数字のシーケンスを検索する必要がある場合は、組み込みのrange()関数を使用してください。 数字のシーケンスが生成されます。例えば:
実例
>>>for i in range(5):
... print(i)
...
0
1
2
3
4
rangeを使用して、区間の値を指定することもできます。
実例
>>>for i in range(5,9) :
print(i)
5
6
7
8
>>>
指定した数値でrangeを開始し、別の増量を指定することもできます(負の数値であってもよい、これは「ステップサイズ」とも呼ばれる)。
実例
>>>for i in range(0, 10, 3) :
print(i)
0
3
6
9
>>>
負の数
実例
>>>for i in range(-10, -100, -30) :
print(i)
-10
-40
-70
>>>
range()関数とlen()関数を組み合わせて、次のようにシーケンスのインデックスを検索できます。
実例
>>>a = ['Google', 'eBay', 'Ceodata', 'Yahoo', 'Naver']
>>> for i in range(len(a)):
... print(i, a[i])
...
0 Google
1 eBay
2 Ceodata
3 Yahoo
4 Naver
>>>
range()関数を使用してリストを作成することもできます。
実例
>>>list(range(5))
[0, 1, 2, 3, 4]
>>>
break と continueステートメント及びループ内のelse句
break実行フローチャート
continue 実行フローチャート:
whileステートメントのコード実行プロセス:
forステートメントのコード実行プロセス:
breakステートメントは、forおよびwhileのループ本体から飛び出すことができます。 forループまたはwhileループから終了した場合、ループに対応するelseブロックは実行されません。
continueステートメントは、現在のループブロックの残りのステートメントをスキップして、次のループに進むようにPythonに指示するために使用されます。
whileにブレーク(break)を使用する:
n = 5
while n > 0:
n -= 1
if n == 2:
break
print(n)
print('ループ終了。')
出力結果は以下の通りです。
4
3
ループ終了。
whileに継続(continue)を使用する。
実例
n = 5
while n > 0:
n -= 1
if n == 2:
continue
print(n)
print('ループ終了。')
出力結果は以下の通りです。
4
3
1
0
ループ終了。
その他の例は次のとおりです。
#!/usr/bin/python3
for letter in 'Florian': # 一番目の実例
if letter == 'a':
break
print ('現在の文字は :', letter)
var = 10 # 二番目の実例
while var > 0:
print ('現在の変数値は:', var)
var = var -1
if var == 5:
break
print ("Good bye!")
上記のスクリプトの実行結果は次のとおりです。
現在の文字は : F
現在の文字は : l
現在の文字は : o
現在の文字は : r
現在の文字は : i
現在の変数値は: 10
現在の変数値は: 9
現在の変数値は: 8
現在の変数値は: 7
現在の変数値は: 6
Good bye!
次の例では、文字列Florianをループし、文字oの場合は出力をスキップします。
#!/usr/bin/python3
for letter in 'Florian': # 一番目の実例
if letter == 'o': # 文字oに遭遇すると出力をスキップする
continue
print ('現在の文字 :', letter)
var = 10 # 二番目の実例
while var > 0:
var = var -1
if var == 5: # 文字5の場合は出力をスキップする
continue
print ('現在の変数値は :', var)
print ("Good bye!")
上記のスクリプトの実行結果は次のとおりです。
現在の文字:F
現在の文字:l
現在の文字:r
現在の文字:i
現在の文字:a
現在の文字:n
現在の変数値:9
現在の変数値:8
現在の変数値:7
現在の変数値:6
現在の変数値:4
現在の変数値:3
現在の変数値:2
現在の変数値:1
現在の変数値:0
Good bye!
ループステートメントにはelse句を含めることができます。これは、完全なリスト(forループで)または条件がfalse(whileループで)になり、ループが終了したときに実行されますが、ループがbreakで終了したときには実行されません。
次の例は、素数のループ実例を照会するために使用されます。
実例
#!/usr/bin/python3
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'イコール', x, '*', n//x)
break
else:
# ループ内には要素が見つからない
print(n, ' は素数')
上記のスクリプトの実行結果は次のとおりです。
2は素数
3は素数
4は2 * 2に等しい
5は素数
6は2 * 3に等しい
7は素数
8は2 * 4に等しい
9は3 * 3に等しい
passステートメント
Python passは、プログラム構造の完全性を維持するための空のステートメントです。
passは何もしません。次の例のように、通常プレースホルダーステートメントとして使用されます。
実例
>>> while True:
... pass #キーボードの中断を待つ(Ctrl + C)
最小クラス:
実例
>>>class MyEmptyClass:
... pass
次の例では、文字がoの場合にpassステートメントブロックを実行します。
#!/usr/bin/python3
for letter in 'aaaooa':
if letter == 'o':
pass
print ('pass ブロックを実行する')
print ('現在の文字:', letter)
print ("Good bye!")
上記のスクリプトを実行した結果は次のとおりです。
現在の文字: a
現在の文字: a
現在の文字: a
pass ブロックを実行する
現在の文字: o
pass ブロックを実行する
現在の文字: o
現在の文字: a
Good bye!
コメントを残す