2-2.条件分岐の基礎を学ぼう
ここからはプログラムを本格的に書いていきます.プログラムを書くにあたって,その基礎は条件分岐と繰り返しに集約されます.これらをまずは学んでいきましょう.
(1) 基礎のIf文
条件分岐の基本の文はIfとelseです.手始めにIfを使って入力した数値が20以上だった場合は「Adult」をそれ以下だった場合を「Young」を出力するプログラムif.pyを作成します.ここで,.pyの拡張子はpythonであることを示します.ここでifやelseの後に「:」を忘れずに入れましょう.
条件分岐の基本の文はIfとelseです.手始めにIfを使って入力した数値が20以上だった場合は「Adult」をそれ以下だった場合を「Young」を出力するプログラムif.pyを作成します.ここで,.pyの拡張子はpythonであることを示します.ここでifやelseの後に「:」を忘れずに入れましょう.
if.py
- a = input(“please type the number: “)
- print("a=",type(a))
- a = int(a)
- print("a=",type(a))
- if a >= 20:
- print("Adult")
- else:
- print("Young")
-
Input(strings,[prompt])
文字列stringsを説明文に[prompt]をプログラムに入力する関数です.
文字列stringsを説明文に[prompt]をプログラムに入力する関数です.
type(object)
objectの型(例:整数,文字列)を返します.返される値は型オブジェクトです.
objectの型(例:整数,文字列)を返します.返される値は型オブジェクトです.
次に,実際に作成したプログラムを回してみます.2.Pythonを使ってみようと同じようにまずはコマンドプロンプトを起動します.続いて,if.pyを保存したパスを開き,if.pyを直接コマンドプロンプトにドラッグ・アンド・ドロップします.すると,自動的にファイルのパスが表示されるはずです.この状態でEnterを押せばそのままプログラムが起動し,「please enter the number」が表示されているはずです.ここで,適当な数字を入力しましょう.はじめに,未成年を示す10歳を入力します.すると,以下のような結果が表示されているはずです.

10歳は当然未成年ですから,未成年を示す「Young」が最終的に表示されています.では,その上の2行にある<class “str”>と<class “int”>は何でしょうか?これはaという変数の型を示しています.if.pyは最初のinputでaの値を決定しています.<class “str”>はその時点における変数aの型が文字列であることを示しています.つまり,inputは入力値を文字列として認識する関数であることを示しています.これを数値として認識してもらうにはintで整数に変換する必要があります.<class “int”>というのは{int( )によってaが整数に変換されたということを示しています.
(2) 条件分岐をより詳細にする-and, or, not, elif-
次に分岐をより詳細にする方法を説明します.andはAかつBという条件分岐の時に使用します.orはAあるいはBという条件分岐に,notはAでないときに使用します.そして,elifはelseとは違い,まだ条件に分岐はあるが更なる分岐を行いたい時に使用します.前の行のif…には当てはまらないが,elif…には当てはまるといった条件分岐の場合が相当します.これらを実際にプログラムにしてみます.
次に分岐をより詳細にする方法を説明します.andはAかつBという条件分岐の時に使用します.orはAあるいはBという条件分岐に,notはAでないときに使用します.そして,elifはelseとは違い,まだ条件に分岐はあるが更なる分岐を行いたい時に使用します.前の行のif…には当てはまらないが,elif…には当てはまるといった条件分岐の場合が相当します.これらを実際にプログラムにしてみます.
- a = 25
- b = 45
- c = 50
-
- if not a == 25:
- print(“a is not 25”)
- else:
- print(“a is 25”)
-
- if b < 30:
- print(“b is below 30”)
- elif b >= 30 and b < 40:
- print(“b is more than 30 and below 40”)
- else:
- print(“b is more than 40”)
-
- if c >= 10 or c <= 60:
- if c < 30:
- print(“c is less than 30, but more than 10”)
- else:
- print(“c is less than 10 or more than 60”)
-
さて,このプログラムの出力結果はどうなるでしょうか?プログラムにする前に出力を想像して以下の表に書いてみましょう.
一つ目の出力はa is 25です.5行目がnotとなっていることに注意しましょう.二つ目はb is more than 40です.これで終わりです.cは?と思われた方がいるかもしれません.何故こうなったのかをIf_1.pyの17行目以降を紐解いてみましょう.
まず,17行目はcが10以上,あるいはcが60以下を指しています.これらは独立した条件です.ここで,実数の集合をRとします.そして,上記の各条件は区間を指定した実数集合
に入力したcが
が成立すればTrueとなるわけです.この時の排反事象は
です.前者の範囲は,後者の範囲はであり,ORが使われていることからTrueとなるのは和集合
つまりは実数全てがTrueとなります.cが数字である限りはFalseにはなりません.なお,17行目がANDであれば共通
がTrueの条件となります.このように,プログラミングは集合論と密接に関係しています .
さて,このプログラムは17行目で必ずTrueとなるので18行目に入ります.ここで,
となるためif文にネストされている19行目は実行されません.しかし,Falseだった場合の命令(elseやelif)は同じネストにありません.この場合,最終的なアクションは何もしないということになります.20行目にelseがありますが,これは17行目のifがFalseだった場合
を指しています.そのため,17行目と20行目は同じインデントにあります.(*1)
添付ファイル