Pythonプログラムフロー制御ステートメント:whileループ


whileループ

Pythonはwhileループを使用して、特定の条件を満たすループを処理します。whileループは通常、反復可能なオブジェクトの処理には使用されませんが、whileループステートメントは無限ループを実現できます。

whileループの基本構造

whileループは、特定の条件を満たすループを処理するためによく使用されます。構文は次のとおりです。

while condition:
    statements
    ……
else:
	statements

条件はループごとに1回判定されます。条件の戻り値がTrueの場合、whileループに入り、ステートメントを実行します。条件の戻り値がFalseの場合、whileの下のステートメントは実行されず、 elseの下のステートメントが実行され、elseは省略できます。条件の戻り値が常にTrueの場合、whileループは「無限ループ」とも呼ばれる無限ループになります。whileループ実行のフローチャートを次の図に示します。

ここに画像の説明を挿入

例は次のとおりです。

例:1から100までの奇数の数を数えます

i = 1 # 开始值
count = 0 # 统计频数
while i <= 100: # 结束条件
	if i % 2 != 0: # 如果满足不能被2整除的条件
		count += 1 # count加1
		i += 1 # 增减量,如果没有增减量则i=1一直成立,成为死循环
	print('1~100之间有{}个奇数'.format(count))

1~100之间有50个奇数

注:whileループの3つの要素:開始値、終了条件、および増加または減少。増加または減少がない場合、開始値は変更されず、終了条件は常にTrueを返し、whileは無限ループになります。

whileループのネストされた使用

Pythonでは、whileループ内でwhileループを使用できます。たとえば、九九の九九を印刷する場合の例は次のとおりです。

a = 1  # 外层循环的开始值
while a < 10:  # 外层循环的结束条件
    b = 1  # 内层循环的开始值
    while b <= a:  # 内层循环的结束条件
        print('%d*%d=%2d' % (a, b, a * b), end=' ')  # 打印,打印完后不换行
        b += 1  # 内层循环的增减量
    print()  # 内层结束后进行换行
    a += 1  # 外层循环的增减量

実行後の出力は次のとおりです。

1*1= 1 
2*1= 2 2*2= 4 
3*1= 3 3*2= 6 3*3= 9 
4*1= 4 4*2= 8 4*3=12 4*4=16 
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

forループとwhileループはどちらもループ関数を実装できますが、forループは、反復可能なオブジェクトをループするために、つまり終了がわかっている場合によく使用されます。whileループは、エンディングが不明な場合によく使用されます。どちらの種類のループも入れ子にすることができますが、入れ子になったループの効率はそれほど高くないことに注意してください。入れ子になったループは実際にデカルト積演算を実行します。ループの数が多いと、待機時間が長くなります。

無限のwhileループ

場合によっては、無限ループである無限ループを使用する必要があります。この要件は、whileループを使用することで実現できます。whileの後の条件が常に真の値に固定されている限り、例は次のようになります。

import time

while True:
    print('这是一个无限循环')
    time.sleep(1)

出力結果:

这是一个无限循环
这是一个无限循环
这是一个无限循环
这是一个无限循环
这是一个无限循环
....

無限ループはエディターで自動的に停止することはできません。手動でのみ停止できます。PyCharmエディターでは、ショートカットキーCtrl+Cを使用してループを停止できます。

ループ制御ステートメント

ループをより適切に制御するために、forループとwhileループでbreakステートメントとcontinueステートメントを使用してループを制御できます。

breakステートメント

breakステートメントは、現在のループからジャンプするため、つまりループを早期に終了するために使用され、elseもスキップされます。例は次のとおりです。

# 统计1~100之间奇数的个数
i = 1  # 开始值
count = 0
while True:  # 结束条件为True
    if i % 2 != 0:
        count += 1
    i += 1  # 增减量
    if i > 100:  # 满足if条件执行break语句
        break  # 跳出循环
else:
    print('while循环结束!')  # else也会被跳过,该句不执行
print('while循环由break语句跳出,else未执行!')
# while循环由break语句跳出,else未执行!
print(count)

演算結果:

while循环由break语句跳出,else未执行!
50

注:breakステートメントは、ネストされたループでも使用できます。ネストされたループの内側のループで使用すると、内側のループからジャンプするだけで、外側のループに影響を与えずに実行を継続できます。

ステートメントを続ける

continueステートメントは、このループをスキップして次のループに進むために使用されます。例は次のとおりです。

# 计算1~100之间能被3整除的数的和
total = 0
for i in range(1, 101):
    if i % 3 != 0:  # 条件:不能被3整除
        continue  # 如果满足以上条件就跳出本次循环,进行下一次循环
    total += i
print(total)

出力結果:

1683

おすすめ

転載: blog.csdn.net/shield911/article/details/124208264