Pythonを真面目にゆっくり学ぶべく
を参考に学んでいきます*1。
前回
4. Pyの皮:コード構造
が空白を用いてプログラムの構造を定義する点で普通の言語と大きく異なる。
4.2 \による行の継続
プログラムを改行して続ける場合には\を付ける。
### \でプログラムを改行できる # (1) alphabet1 = '' alphabet1 += 'abc' alphabet1 += 'def' # (2) alphabet2 ='' +\ 'abc' +\ 'def' alphabet1 == alphabet2
4.3 if, elif, elseによる比較
で行は条件がか否かを判定するの文である。
disaster = True if disaster: print("True") else: print("False") colour = 'puce' if colour == 'red': print('It is red!') elif colour == 'green': print('It is green!') else: print('It is other colour.')
意味 |
||
---|---|---|
等しい |
||
等しくない |
||
より小さい |
||
以下 |
||
より大きい |
||
以上 |
||
含まれる |
x = 15 # y1 = (5 < x) and (10 < x) print(y1) # y2 = (5 < x) or (10 > x) print(y2) # y3 = (5 < x) and not (10 > x) print(y3) ## 1個の変数で複数の比較をandすることができる z1 = 5 < x < 20 print(z1) z2 = 5 < x < 20 < 99 # 5 < x and x < 20 and x <99の意味 print(z2)
4.3.1 Trueとは何か
チェックしている要素が値でなければどのような動作をするか。
で偽を判定する際、必ずしも明示的にでなくてもよい。
意味 |
||
---|---|---|
値 |
||
整数の |
||
型の |
||
空文字列 |
||
空リスト |
||
空タプル |
||
空辞書 |
||
上記以外はすべてと見なされる。は上記か否かで真偽を判定している。
4.3.3 breakによるループ中止
特定条件を満たすまでループを続けたいが、その条件をいつ満たすか不明である場合、文を持つ無限ループが活用できる。
while True: stuff = input("String to capitalise [type q to quit]: ") if stuff == "q": break print(stuff.capitalize())
4.3.4 continueによる次のイテレーションの開始
特定の条件を満たしたときにループを抜けるのではなく、次のイテレーションを直ちに始めたい場合には、文を用いる。
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)
4.3.5 elseによるbreakのチェック
ループが正常終了したら、制御はオプションの節に渡される。何かをチェックするためにループを書き、それが見つかったら直ぐにするときにこれを用いる。節はループが終了したものの、最終的に特定条件が満たされなかった場合に実行される。
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")
4.4 forによる反復処理
はイテレータを頻繁に用いる。これにより、データ構造のサイズや実装方法が道であってもデータ構造の各要素を操作できるからである。
##################### ### for文の書き方 ### ##################### # for文はwhileでも書けるけれども… rabbits = ['Flospy', 'Mopsy', 'Cottontail', 'Peter'] count = 0 while count < len(rabbits): print(rabbits[count]) count += 1 # Pythonicには… for rabbit in rabbits: print(rabbit)
リストはでイテラブル・オブジェクトである。タプルやリストを文で処理すると、一度にひとつずつ要素が取り出される。辞書を文で処理すると、キーを返す。
また文を文に追加するとそこでループを停止する。またを入れると文を次のイテレーションへとジャンプさせる。またを追加すると、文が一度もループされなかった場合に代わりにそこで指定した処理を行う。
4.4.1 zipを用いた複数シーケンスの反復処理
ループは関数を用いることで複数のシーケンスを並列で反復処理できる。
### zip()を用いた複数シーケンスの処理 days = ['Monday', 'Tuesday', 'Wednesday'] fruits = ['banana', 'orange', 'peach'] drinks = ['coffee', 'tea', 'beer'] desserts = ['tiramisu', 'ice cream', 'pie', 'pudding'] for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts): print(day, ": drink", drink, "- eat", fruit, "-enjoy", dessert)
4.4.2 range()による数値シーケンスの生成
を用いると、イテラブルを返し、指定した範囲の数値のストリームを返すことができる。
x = [1,2,3] for x in range(0,3): print(x)
*1:第2版が出ているものの初版しか持っていないのでこちらで。