Python3入門(5)ループ文

Python3入門(5)ループ文

while文

if文はある条件が成立したら一度だけブロックで指定した処理を行います。while文はif文によく似ています。
while文はある条件が成立したら、条件が成立している間何度もブロックで指定した処理を繰り返します。
条件は必ず終了するような条件を指定しないと無限ループに入りますので注意してください。
なお、Pythonにはdo〜 while文はありません。

while 条件式:
□□□□処理

while文の例

count = 0
while count < 10:
    print(count)
    count += 1

この例ではcount機能をつけることで条件を終了させています。

while else文

Pythonの特徴としてループが終了した時の処理ができることです。
その方法としてelseによるブロックを記述します。

while 条件式:
□□□□処理
else:
□□□□処理

while〜else文の例

count = 0
while count < 10:
    print(count)
    count += 1
else :
    print('done')

この例では0から9まで1ずつカウントを表示し、最後にdoneを表示します。

input()について

input関数はユーザーがキーボードに入力したデータを受け付ける組み込み関数です。
input関数とループ文、breakを組み合わせると便利に使えます。
breakはif文と併用すると、条件が成立するとbreakでそれ以降の処理は行いません。

input()を使った例
ターミナルに「Enter:」と表示されて入力を待ちます。
「ok」と入力するとbreakで終わります。
「ok」以外なら、「next」と表示されてさらに入力を待ちます。

while True:
    word = input('Enter:')
    if word == 'ok':
        break
    print('next')

for in 文

for in文はイテレータです。
イテレータとはリストやタブルや辞書などのコレクション型の要素に順にアクセスし処理する場合に使用するもので、オブジェクトから順に要素を取り出すことを言います。

配列を展開して表示する例

some_list = [1,2,3,4,5]
for i in some_list:
    print(i)

文字列を展開して表示する例

for s in 'Yestrday':
    print(s)

breakとcontinueの違い

break文はループ処理を中断してブロックを抜けることができます。
continue文は条件に適合した部分をスキップするだけでそれ以降はループを続けます。

continueとbreakの例

#continueの例
for word in ['My','name','is','Tahara']:
    if word == 'is':
        continue
    print(word)

#breakの例
for word in ['My','name','is','Tahara']:
    if word == 'is':
        break
    print(word)

breakとfor〜elseの例

for fruit in ['apple','banana','grape']:
    if fruit == 'banana':
        print('stop wating')
        break
    print(fruit)
else:
  print('I ate all')

range関数

for in 文でイテレートすることができますが、もっと簡単にイテレートすることができる関数が用意されています。
それがrange関数です。正確にはrengeオブジェクトのコンストラクタを使用します。
range関数は引数の指定でその使い方が変わってきます。

renge(1,10,2)
第1引数は開始インデックス
第2引数は終了インデックス
第3引数はステップ数

通常のfor in文を使ったイテレート

num_list = [1,2,3,4,5]
for i in num_list:
    print(i)

range関数を使ったイテレート

for i in range(2,10,2):
    print(i)

表示結果
2
4
6
8

文字列を繰り返す場合もrange関数を使うことができます。
for in文のi部分を_にすることで、命令文でインデックスは使用しないという意味になります。

for _ in range(5):
    print('test')

表示結果
test
test
test
test
test

enumerate関数

enumerate関数はリストなどのインデックスと要素をペアタプルにしてイテレートしてくれるものです。

enumerate関数の例

for i,fruit in enumerate(['apple','banana','grape']):
    print(i,fruit)

表示結果
0 apple
1 banana
2 grape

zip関数

zip関数は引数で指定した複数のリストの要素を順にまとめてタプルとして戻すものです。

zip関数の例

days = ['Mon','Tue','Wed']
fruits = ['apple','banana','grape']
drinks = ['coffe','tea','milk']
for day,fruit,drink in zip(days,fruits,drinks):
    print(day,fruit,drink)

表示結果
Mon apple coffe
Tue banana tea
Wed grape milk

辞書のイテレート

辞書をイテレートする場合はitems()を活用します。

辞書のイテレートする例

myList = {'name':'Tahara','age':20}
for i,v in myList.items():
    print(i,':',v)

表示結果
name : Tahara
age : 20