Python3 ループ文

この章では、Python のループ文の使用方法を紹介します。

Python のループ文には for と while があります。

Python のループ文の制御構造図は次のとおりです。

ループ制御のキーワードとメソッド

ループ制御
キーワード / 関数 説明 例
for 反復ループ。シーケンスまたは反復可能オブジェクトを走査するために使用します。 for i in list:
while 条件ループ。条件が True の間、実行を続けます。 while x > 0:
break 現在のループを直ちに終了します。 break
continue 今回のループの残りのコードをスキップして、次の反復に進みます。 continue
else(ループ) ループが正常に終了した(break されていない)場合に実行されます。 for i in range(3): ... else: ...
pass ループ内のプレースホルダ文(空操作) for i in range(5): pass
range() 整数シーケンスを生成し、通常 for ループと組み合わせて使用します。 range(0, 5)
enumerate() 走査時にインデックスと値を同時に取得します。 for i, v in enumerate(list):

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 の後の条件文が false の場合、else の文ブロックが実行されます。

構文形式は次のとおりです。

while <expr>:
    <statement(s)>
else:
    <additional_statement(s)>

expr 条件文が true の場合、statement(s) 文ブロックが実行され、false の場合、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 ループの例:

例

#!/usr/bin/python3 sites = ["Baidu", "Google","サンプル","Taobao"] for site in sites: print(site)

上記のコードを実行すると、出力結果は次のとおりです。

Baidu
Google
サンプル
Taobao

文字列内の各文字を出力するためにも使用できます:

例

#!/usr/bin/python3 word = 'サンプル' for letter in word: print(letter)

上記のコードを実行すると、出力結果は次のとおりです。

r
u
n
o
o
b

整数範囲の値は range() 関数と組み合わせて使用できます:

例

#!/usr/bin/python3 # 1 から 5 までのすべての数字: for number in range(1, 6): print(number)

上記のコードを実行すると、出力結果は次のとおりです。

1
2
3
4
5

for...else

Python では、for...else 文はループ終了後にコードを実行するために使用されます。

構文形式は次のとおりです。

for item in iterable:
    # 循环主体
else:
    # 循环结束后执行的代码

ループが完了(つまり iterable 内のすべての要素を走査し終えた)後に、else 節のコードが実行されます。ループ中に break 文に遭遇した場合はループが中断され、その場合 else 節は実行されません。

例

for x in range(6):
  print(x)
else:
  print("Finally finished!")

スクリプトを実行すると、出力結果は次のとおりです。

0
1
2
3
4
5
Finally finished!

次の for の例では break 文を使用しています。break 文は現在のループ本体を抜け出すために使用され、else 節は実行されません。

例

#!/usr/bin/python3 sites = ["Baidu", "Google","サンプル","Taobao"] for site in sites: if site == "サンプル": print("サンプル!") break print("ループデータ" + site) else: print("ループデータがありません!") print("ループ完了!")

スクリプトを実行すると、"サンプル" をループしたときにループ本体から抜け出します。

循环数据 Baidu
循环数据 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', 'Baidu', 'サンプル', 'Taobao', 'QQ'] >>> for i in range(len(a)): ... print(i, a[i]) ... 0 Google 1 Baidu 2 サンプル 3 Taobao 4 QQ >>>

range() 関数を使用してリストを作成することもできます:

例

>>>list(range(5)) [0, 1, 2, 3, 4] >>>

range() 関数の使用方法の詳細については、以下を参照してください:https://www.example.com/python3/python3-func-range.html


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 'サンプル': # 最初の例 if letter == 'b': break print ('現在の文字は :', letter) var = 10 # 2番目の例 while var > 0: print ('現在の変数値は :', var) var = var -1 if var == 5: break print ("Good bye!")

上記のスクリプトを実行すると、出力結果は次のとおりです。

当前字母为 : R
当前字母为 : u
当前字母为 : n
当前字母为 : o
当前字母为 : o
当前变量值为 : 10
当前变量值为 : 9
当前变量值为 : 8
当前变量值为 : 7
当前变量值为 : 6
Good bye!

次の例では文字列 サンプル をループし、文字 o に遭遇したら出力をスキップします:

例

#!/usr/bin/python3 for letter in 'サンプル': # 最初の例 if letter == 'o': # 文字が o の場合は出力をスキップ continue print ('現在の文字 :', letter) var = 10 # 2番目の例 while var > 0: var = var -1 if var == 5: # 変数が 5 の場合は出力をスキップ continue print ('現在の変数値 :', var) print ("Good bye!")

上記のスクリプトを実行すると、出力結果は次のとおりです。

当前字母 : R
当前字母 : u
当前字母 : n
当前字母 : b
当前变量值 : 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 'サンプル': if letter == 'o': pass print ('pass ブロックを実行') print ('現在の文字 :', letter) print ("Good bye!")

上記のスクリプトを実行すると、出力結果は次のようになります:

当前字母 : R
当前字母 : u
当前字母 : n
执行 pass 块
当前字母 : o
执行 pass 块
当前字母 : o
当前字母 : b
Good bye!
その他の拡張