見出し画像

コード構造

while による反復処理

if, elif, else によるテストは、上から下に進む。同じことを2回以上行うときにwhile ループ(Pythonで最も単純なループ)が必要。

# 1から5までの数値を表示する単純なループ

>>> count = 1
>>> while count <= 5:
...     print(count)
...     count += 1
... 
1
2
3
4
5
>>> 

whileループは、countと5を比較してcountが5以下ならループを続ける。countの値を表示してから、count += 1 で1ずつインクリメント(加算)し、ループの先頭に戻る。countの値は2になっているが、再び5と比較し、5以下なのでwhileループが実行→表示→インクリメント→ループの先頭に戻るを繰り返す。インクリメント後のcountが6になって先頭に戻ると、count <= 5 がFalseになり、whileループは終了する。

break によるループ中止

何かが起きるまでループを続けたいが、それがいつ起きるのか分からない場合は、break文を持つ無限ループを使う。
下記コードは、input( ) 関数を使ってキーボードからの入力行を読み出す→最初の文字を大文字に変換して入力行を表示→ q だけの行を読み込んだらループを終了。

>>> while True:
...     stuff = input("String to capitalize [type q to quit]:")
...     if stuff == "q":
...         break
...     print(stuff.capitalize())
... 
String to capitalize [type q to quit]:test
Test
String to capitalize [type q to quit]:hey, it works.
Hey, it works.
String to capitalize [type q to quit]:q
>>> 

continue による次のイテレーションの開始

何らかの理由からループを抜け出すのではなく、次のイテレーション(反復処理の1回分)を直ちに始めたい場合に用いる。
下記コードは、整数を読む→その整数が奇数なら自乗→偶数なら何もしない→ q でループを終了

>>> while True:
...     value = input('Integer, please [q to quit]:')
...     if value == 'q':
...         break
...     number = int(value)
...     if number % 2 == 0:
...         continue
...     print(number, 'squared is ', number * number)
... 
Integer, please [q to quit]:3
3 squared is  9
Integer, please [q to quit]:6
Integer, please [q to quit]:q
>>>

elseによるbreakのチェック

whileループがbreakせずに正常終了したら、制御はオプションのelseに渡される。何かをチェックするためにwhileループを書き、それが見つかったらすぐにbreakするときに使い、elseは、whileループが終了したものの探しものが見つからなかった時に実行される。

>>> numbers = [1, 3, 5]
>>> position = 0
>>> while position < len(numbers):
...     number = numbers[position]
...     if number % 2 == 0:
...         print('Found even number', number)
...         break
...     position += 1
... else:
...     print('No even number found')
... 
No even number found
>>> 



最後までお読みいただき、本当にありがとうございます。 明日も継続して学習のアウトプットを続けていきたいと思いますので、また覗きにきていただけると嬉しいです! 一緒に学べる仲間が増えると、もっと喜びます!笑 これからも宜しくお願い致しますm(__)m