Python3のループ文
この章では、Python ループ ステートメントの使用方法を紹介します。
Python のループ ステートメントには、for と while が含まれます。
Python ループ ステートメントの制御構造図は次のとおりです:
while ループ
Python の while ステートメントの一般的な形式:
while 判断条件: 语句
コロンとインデントにも注意する必要があります。また、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ループは、while...elseでelse文を使用しますelseは、条件文が偽の場合にelse文ブロックを実行します:#!/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 ('欢迎访问php中文网!') print ("Good bye!")
注: CTRL+C を使用して、上記の無限ループを中断します。
上記のスクリプトを実行すると、出力結果は次のようになります:forステートメントPythonのforループは、リストや文字列などの項目の任意のシーケンスを走査できます。 for ループの一般的な形式は次のとおりです:
for <variable> in <sequence>: <statements> else: <statements>Python ループの例:
>>> languages = ["C", "C++", "Perl", "Python"] >>> for x in languages: ... print (x) ... C C++ Perl Python >>>Break ステートメントは、現在のループ本体から飛び出すために使用されます。
#!/usr/bin/python3 sites = ["Baidu", "Google","php","Taobao"] for site in sites: if site == "php": print("php中文网!") break print("循环数据 " + site) else: print("没有循环数据!") print("完成循环!")
スクリプトの実行後、「php」へのループがループから抜け出します:
循环数据 Baidu 循环数据 Google php中文网! 完成循环!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 >>>
また、範囲を指定した数値で開始し、異なる増分 (負の数値も指定可能) を指定することもできます。これは「ステップ サイズ」とも呼ばれます '):
>>> 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() 関数を組み合わせて、次のようにシーケンスのインデックスを反復処理できます。 range() 関数を使用してリストを作成することもできます:
>>> a = ['Google', 'Baidu', 'php', 'Taobao', 'QQ'] >>> for i in range(len(a)): ... print(i, a[i]) ... 0 Google 1 Baidu 2 php 3 Taobao 4 QQ >>>break ステートメントと continue ステートメント、およびループ内の else 節break ステートメントは for および while ループ本体から飛び出すことができます。 for ループまたは while ループを終了すると、対応するループ else ブロックは実行されません。 例は次のとおりです:
>>> list(range(5)) [0, 1, 2, 3, 4] >>>
上記のスクリプトを実行した出力結果は次のとおりです:
#!/usr/bin/python3 for letter in 'php': # 第一个实例 if letter == 'b': break print ('当前字母为 :', letter) var = 10 # 第二个实例 while var > 0: print ('当期变量值为 :', var) var = var -1 if var == 5: break print ("Good bye!")
continue ステートメントは、Python に現在のループ ブロック内の残りのステートメントをスキップし、次のループのラウンドに続行するように指示するために使用されます。
当前字母为 : R 当前字母为 : u 当前字母为 : n 当前字母为 : o 当前字母为 : o 当期变量值为 : 10 当期变量值为 : 9 当期变量值为 : 8 当期变量值为 : 7 当期变量值为 : 6 Good bye!
上記のスクリプトを実行した出力結果は次のとおりです:
#!/usr/bin/python3 for letter in 'php': # 第一个实例 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!")
ループ ステートメントには else 句を含めることができ、リストが使い果たされた場合 (for ループ内)、または条件が false になった場合 (while ループ内) に実行されます。これによりループは終了しますが、ブレーク終了時にループは実行されません。
次の例は素数をクエリするためのループ例です:
当前字母 : R 当前字母 : u 当前字母 : n 当前字母 : b 当前变量值 : 9 当前变量值 : 8 当前变量值 : 7 当前变量值 : 6 当前变量值 : 4 当前变量值 : 3 当前变量值 : 2 当前变量值 : 1 当前变量值 : 0 Good bye!
上記のスクリプトを実行した出力結果は次のとおりです:
#!/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, ' 是质数')
passステートメント
Python passはプログラム構造の整合性を維持するための空のステートメントです。
pass は何も行わず、通常はプレースホルダーステートメントとして使用されます。 次の例
2 是质数 3 是质数 4 等于 2 * 2 5 是质数 6 等于 2 * 3 7 是质数 8 等于 2 * 4 9 等于 3 * 3
最小クラス:
>>> while True: ... pass # 等待键盘中断 (Ctrl+C)
次の例は、文字が o の場合に pass ステートメントブロックを実行します:
>>> class MyEmptyClass: ... pass
の出力結果。上記のスクリプトを実行すると:
#!/usr/bin/python3 for letter in 'php': if letter == 'o': pass print ('执行 pass 块') print ('当前字母 :', letter) print ("Good bye!")