
Python3 自習・復習vol.009
やっと少しずつ note の使い方が分かってきました・・・。Python 学習以前の問題でした。こちらも少しずつ勉強して読みやすくしていこうと思います。
if, elif, else による比較
所持金が8,000円以上の場合、ディズニーランドへ行く。最初の条件に当てはまらない場合は、elif の条件の3,000円以上あれば映画館へ行く。どちらの条件にも当てはまらない場合は、残念ながらどこにも行けません!
money = 9000
if money >= 8000:
print('ディズニーランドに行きます')
elif money >= 3000:
print('映画館へ行きます')
else:
print('どこにも行けません')
ディズニーランドに行きます
>>>
While による反復処理
f, elif, else によるテストは上から下に進むが、同じことを2回以上繰り返す場合にループが必要になる。
Python で最も単純なループのメカニズムは while である。
下記は、1から5までの数値を表示する単純なループ。
count = 1
while count <= 5:
print(count)
count += 1
1
2
3
4
5
>>>
count が6になってから最初の行に戻ると、count <= 5 が今度は False になり、while ループは終了し次の行に移動する。
break によるループ中止
何かが起きるまでループを続けたいが、それがいつ起きるかがはっきりわからない場合に、break 文を持つ無限ループが使える。次のコードは、Python の 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
string to capitalize [type q to quit]: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]:1
1 squared is 1
Integer, please [q to quit]:2
Integer, please [q to quit]:3
3 squared is 9
Integer, please [q to quit]:4
Integer, please [q to quit]:5
5 squared is 25
Integer, please [q to quit]:q
>>>
else による break のチェック
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
いいなと思ったら応援しよう!
