whileとforによる反復処理

Bookmark this on Google Bookmarks
Pocket

whileについて

if,elif,elseによるテストは、上から下に進むが、同じことをくりかえさなければいけない時は、whileが一番単純なループで使いやすいと思います。

count=1  
while count <= 5:  
    print(count)  
    count+=1  

まず、countに1を代入し、whileループでは、そのcountが5以下の時にcountを表示させなさいという命令が下されている。
ここで重要なのは、print(count)した後に必ずcountに1をプラスしていることだ。
count+=1というのは、count=count+1と同義である。
つまりこのコードの実行結果は、

1
2
3
4
5

となる。

breakによるループの中止

何かが起きる、または何かを行うまではループを続けたいが、いつそれが起きるかはっきりしない場合は、break文を持つループを作成する。

while True:
    text=input()
    if text=="end":
        break
    elase:
        print(text)
        continue

これは、while以下のループがTrueの時(間違っていない時と考えればいい。)
テキストを入力させ、さらにif文で、「end」と入力した時はbreakする(=whileから外れる)ようにしてある。
そして、end以外の入力時は、入力したものをprintさせるようにしている。

しかし、いつもこんな感じでwhile文を書いて・・・とするのもワンパターンでよくない。

a=['あ','い','う','え','お']

このリストにある[‘あ’,’い’,’う’,’え’,’お’]を順番にprintさせたい時、while文を書くとこうなる

num=0
while num < len(a):
    print(a[num])
    num += 1

これでは、少々めんどくさい。for in を使えばもっと楽になる。

for content in a:
    print(content)

これは、リストaの中(in)にあるfor( each )contentを繰り返せという意味になる。eachがないせいでforが意味わからんことになってしまっている
しかし、この書きかたはかなりスッキリしているし、リストにどれだけの数の要素が含まれているのかわからなくても
一気に読み出してくれるところが大変お得感満載である。

文字列をfor in でprintさせると、1文字ずつが表示されていく。

辞書に置ける扱い方も同じような感じ。

student={'小学生':'6-12歳','中学生':'13-15歳','高校生':'16-18歳','大学生':'18-22歳'}
for st in student:
    print(st)

この結果は、キーが返される。

高校生
中学生
大学生
小学生
博士
大学院生

キーではなく値を返したい場合は、リストの後に.values()つけてあげる

内包表記

これから、karanorisutowo
空のリストを作り、一つずつあ、い、う、え、おと加えていく作業を行う。
やっぱりやめた、わかりやすいように1,2,3,4,5と加えていく作業を行う。

num=[]
num.append(1)
num.append(2)
num.append(3)
num.append(4)
num.append(5)
print(num)
[1, 2, 3, 4, 5]

しかしこれでは、疲れてしまうし、もし10000まで入力しろと言われたら死んじゃう。
そこでfor文
これで
一気に1〜5までをリストに加えることができた。

さらには、内包表記によって、一行で済ませられる。

print(list(i for i in range(1,6)))
[1, 2, 3, 4, 5]

次はこの内包表記についてもう少し詳しく述べていくことにする。