読者です 読者をやめる 読者になる 読者になる

befs_anneの日記

インフラエンジニアとして多少マシになっていく記録(予定)

【写経】【更新中】『みんなのPython 第3版』 Chapter 03 条件分岐とループ(最終更新: 20160906)

写経 python 更新中

概要

『みんなのPython 第3版』から、「Chapter 03 条件分岐とループ」のサンプルコードを写経する。

03-01 if文で条件分岐する

  • if文の簡単な例
>>> year = 1868
>>> if year == 1868:
...     print("明治元年")
... 
明治元年
>>> 

else文を使う

  • else文の簡単な例
    • 条件が成り立たなかった時に実行したい命令がある時に使う。
>>> year = 1900
>>> if year == 1868:
...     print("明治元年")
... else:
...     print("明治", year-1867, "年")
... 
明治 33 年
>>>

elifを使った条件分岐

  • ifとelseだけを使った例
>>> year = 1912
>>> if year == 1868:
...     print("明治元年")
... else:
...     if year == 1912:
...             print("大正元年")
...     else:
...             print("明治", year-1867, "年")
... 
大正元年
>>>
  • elif文を使った例
>>> year = 1912
>>> if year == 1868:
...     print("明治元年")
... elif year == 1912:
...     print("大正元年")
... else:
...     print("明治", year-1867, "年")
... 
大正元年
>>> 
  • wareki.py
[~ 21:56:53 bef]$ cat wareki.py 
#!/usr/bin/env python
# encoding: utf-8

year = int(input("西暦:")) # キーボードから西暦を入力

if year == 1868:
    print("明治元年")
elif year < 1912:
    print("明治", year-1867, "年")
elif year == 1912:
    print("対象元年")
elif year < 1926:
    print("大正", year-1911, "年")
elif year == 1926:
    print("昭和元年")
elif year < 1989:
    print("昭和", year-1988, "年")
elif year == 1989:
    print("平成元年")
else:
    print("平成", year-1988, "年")

input()
[~ 21:56:58 bef]$ 

(20160905)

比較演算子

>>> year = 1868
>>> year == 1868
True
>>> year == 1912
False
>>> year
1868
>>> 
  • turtle4.py
[python_shakyo 23:55:35 bef]$ cat turtle4.py 
#!/usr/bin/env python
# encoding: utf-8

from turtle import *

speed('fastest')

for i in range(40):
    forward(100)
    if i % 4 == 1:
        right(160)
    elif i % 4 == 3:
        right(20)
    else:
        right(10)

input()
[python_shakyo 23:55:42 bef]$ 

複雑な比較 - 論理演算

論理演算子の優先順位

  • 正常に動作しない例
    • 「18歳以下、65歳以上、ただし0歳を除く」のつもりだが、0歳でTrueになる。
      • andがorよりも優先されているから。
>>> age = 0
>>> if age <= 18 or age >= 65 and age != 0:
...     print("True")
... else:
...     print("False")
... 
True
>>> 

- ()で優先順位を指定

age = 0 if (age <= 18 or age >= 65) and age != 0: ... print("True") ... else: ... print("False") ... False

(20160906)