「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

Pythonをゆっくりていねいに学ぶ(その06/X)

 Pythonを真面目にゆっくり学ぶべく

を参考に学んでいきます*1

4. Pyの皮:コード構造

 \mathrm{Python}が空白を用いてプログラムの構造を定義する点で普通の言語と大きく異なる。

4.1 #によるコメント

 # 以降にあるものはコメントアウトできる。\mathrm{Python}には複数行に渡るコメントアウトは無い。

4.2 \による行の継続

 プログラムを改行して続ける場合には\を付ける。

### \でプログラムを改行できる
# (1)
alphabet1 = ''
alphabet1 += 'abc'
alphabet1 += 'def'

# (2)
alphabet2 ='' +\
'abc' +\
'def'

alphabet1 == alphabet2

4.3 if, elif, elseによる比較

 \mathrm{Python}\mathrm{if,else}行は条件が\mathrm{True}か否かを判定する\mathrm{Python}の文である。

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.')
  
意味
  
等しい
==
  
等しくない
!=
  
より小さい
\lt
  
以下
\leq
  
より大きい
\gt
  
以上
\geq
  
含まれる
\mathrm{in}
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とは何か

 チェックしている要素が\mathrm{Bool}値でなければどのような動作をするか。
 \mathrm{Python}で偽を判定する際、必ずしも明示的に\mathrm{False}でなくてもよい。

Falseと見なされるもの

  
意味
  
\mathrm{Bool}
\mathrm{False}
  
\mathrm{null}
\mathrm{None}
  
整数の0
0
  
\mathrm{float}型の0
0.0
  
空文字列
\mathrm{''}
  
空リスト
[]
  
空タプル
()
  
空辞書
\{\}
   \mathrm{set}()

上記以外はすべて\mathrm{True}と見なされる。\mathrm{Python}は上記か否かで真偽を判定している。

4.3.2 whileによる反復処理

 \mathrm{Python}で最もシンプルなループ・メカニズムは\mathrm{while}である。

count = 1

while count <= 5:
    print(count)
    count += 1
4.3.3 breakによるループ中止

 特定条件を満たすまでループを続けたいが、その条件をいつ満たすか不明である場合、\mathrm{break}文を持つ無限ループが活用できる。

while True:
    stuff = input("String to capitalise [type q to quit]: ")
    if stuff == "q":
        break
    print(stuff.capitalize())
4.3.4 continueによる次のイテレーションの開始

 特定の条件を満たしたときにループを抜けるのではなく、次のイテレーションを直ちに始めたい場合には、\mathrm{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のチェック

 \mathrm{while}ループが正常終了したら、制御はオプションの\mathrm{else}節に渡される。何かをチェックするために\mathrm{while}ループを書き、それが見つかったら直ぐに\mathrm{break}するときにこれを用いる。\mathrm{else}節は\mathrm{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")

4.4 forによる反復処理

 \mathrm{Python}イテレータを頻繁に用いる。これにより、データ構造のサイズや実装方法が道であってもデータ構造の各要素を操作できるからである。

#####################
### 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)

 リストは\mathrm{Python}でイテラブル・オブジェクトである。タプルやリストを\mathrm{for}文で処理すると、一度にひとつずつ要素が取り出される。辞書を\mathrm{for}文で処理すると、キーを返す。
 また\mathrm{break}文を\mathrm{for}文に追加するとそこでループを停止する。また\mathrm{continue}を入れると\mathrm{for}文を次のイテレーションへとジャンプさせる。また\mathrm{else}を追加すると、\mathrm{break}文が一度もループされなかった場合に代わりにそこで指定した処理を行う。

4.4.1 zipを用いた複数シーケンスの反復処理

 \mathrm{for}ループは\mathrm{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()による数値シーケンスの生成

 \mathrm{range}()を用いると、イテラブルを返し、指定した範囲の数値のストリームを返すことができる。

x = [1,2,3]
for x in range(0,3):
    print(x)

*1:第2版が出ているものの初版しか持っていないのでこちらで。

プライバシーポリシー お問い合わせ