python入門3(if文)

python入門、if文とは

if文とは

if文とはプログラム上の制御構造の一つで、ある条件分岐を用いるときに使われる構文です。

「もし~~なら~~を実行する」このように条件が変わるたびに実行を変化させたい時に用います。

制御構造とは

まず、制御構造について軽く説明しておきます。

python等のプログラミングでは、コードの上から順番に処理が行われていきます。

この時、処理を繰り返したり、条件が当てはまらなかったら実行を行わなかったりと、コードを制御する構文をまとめて制御構造と呼びます。

これから説明を行うif文も制御構造の一つです。

条件分岐とは

もし男なら「Aがおススメです」と出力して、もし女なら「Bがおススメです」と出力するなど、条件によって実行する内容を分岐させるという意味です。

簡単なif文を書いてみます

それではコードを用いてif文の書き方を説明していきます。

h = 1
if h == 1:
    print("1です")
1です
このコードでは変数は「1」とされています。
2行目と3行目がif文となっています。
この構文を日本語に翻訳すると、「もし、hが1なら、「1です」と出力する」となります。

if文の条件の書き方

if文は「if 条件:」と書きます。

条件には様々なパターンがありますが、先ほどのコードでは、
「h == 1」と書かれています。これは、hが1である時が条件となっています。

「==」と書かれていますが、これはpythonで「等しい時」に用いられます。
「=」と書き間違えないように気を付けましょう。
「=」は変数等に用いられ「A = B」BをAに代入する時等に用いられます。

インデントとブロック

先ほどのコードをもう一度見てみましょう。

h = 1
if h == 1:
    print("1です")

3行目の先頭が空白になっています。

これはインデントと呼ばれる、文字をずらして(字下げ)、コードを読みやすくする為に用いられる行為です。

しかし、pythonではこのインデントが非常に重要な役割をもっています。

他のプログラミング言語では{ }等を用いて、ブロックとして扱うのに対して、
pythonでは、同じインデントが使われている箇所をブロックとして扱います。

インデントにはルールが決められており、1レベルのブロックを作成するのに、インデントは「半角スペースを4つ」又は「tabキー1回」用います。

少し、ややこしく感じるかもしれませんが、これはテキストエディター等を用いると改行をすると同じインデントに合わしてくれたりするのでむしろ抜群に書きやすく、しかも読みやすいのです(^^♪

ブロックとは

条件を満たしたときに実行されるプログラムをまとめてブロックと呼びます。

すこしコードを変えてコチラを見てください

h = 1
if h == 1:
    print("1です")
    print("1なんです")
print("ここは絶対表示されます")
1です
1なんです
ここは絶対表示されます

この場合、インデントされている3行目と4行目がブロックとなります。

上記のコードの変数を2に変えてみると

h = 2
if h == 1:
    print("1です")
    print("1なんです")
print("ここは絶対表示されます")
ここは絶対表示されます
このように条件が成立していない時は、条件の下のブロックは実行されません。

elseとは

次に「もし~~ではなかったら」の書き方を説明します。

ifの条件に当てはまらなかったら別のコードを実行する時には「else」を使います。

次のコードを見てみましょう。

h = 2
if h == 1:
    print("1です")
else:
    print("1ではありません")
1ではありません

この場合、変数が「2」なので、ifの条件を満たしていません。

そこで、「else:」の条件を満たしたこととなり、「else」直下のブロックが実行されたわけです。

次に、条件分岐が複数ある場合を見てみましょう。

elifとは

elifとは、「else if」の略語で、ifとelseの間に条件を加える際に用います。
書き方はifやelseと同じです。

h = 2
if h == 1:
    print("1です")
elif h == 2:
    print("2です")
else:
    print("1でも2でもありません")
2です

ifの条件は満たしていませんので、一つ目のブロックはスキップされます。

elifの条件を満たしているので、「2です」が出力されました。

elifはいくつも記載することができますが、
同じif文内で最初に条件を満たしたブロックのみ実行されます。

コチラのコードを見てみましょう。

h = 1
if h == 1:
    print("1です")
elif h == 2:
    print("2です")
elif h == 1:
    print("1なのに実行されません")
elif h == 2:
    print("2なのに実行されません")
else:
    print("1でも2でもありません")
1です
この場合、3行目のコードのみ実行され、7行目のコードは実行されません。

passとは

条件を満たしたときに何も行わないときは「pass」を書いておきます。

h = 1
if h == 1:
    pass

pythonでは基本的に空のブロックを持つことができません。

if文の中で条件を満たしたときに何も処理を行わない時は「pass」を記載しないとエラーがでてしまいます。

補足

if文の条件には「==」だけでなく、比較演算や論理演算の条件を書くことも可能です。

比較演算や論理演算を使用したコードを書いておきます。

今はざっくりと頭の中にいれておきましょう。

h = 22
if h > 19:
    print("成人です")
else:
    print("未成年です")

この式は変数が19より上なら条件を満たしている書き方です。

因みに「if h >= 20」と書くと20以上だと条件を満たすということになります。

詳しくは比較演算の項目で説明します。

h = 5
if h == 1 or 5:
    print("1か5です")
1か5です
こちらが論理演算です。「or」や「and」等を使用します。
上の式は変数が「1」か「5」の時に条件を満たします。
詳しくは論理演算の項目で説明します。

if文の基礎問題

if文の基礎問題です。出力結果を予測してください。

エラーが出る場合はエラーの予測をしてください。(インデントに関してのエラーはこの問題の中にありませんので、数えなくて大丈夫です。)

問1:

h = 1 + 1
if h == 2:
    print("2です")
答えを見る
A:2です (hが2なので、ifの条件が満たされています)

問2:

h1 = 1
h2 = 2
if h1 + h2 == 3:
    print("3です")
答えを見る
A:3です (条件を満たしているので実行されます)

問3:

h = 1
if h == 1:
    print("1です1")
elif h == 1:
    print("1です2")
else:
    print("1です3")
if h == 1:
    print("1です4")
答えを見る
A:1です1
    1です4 (elifはifが満たされているので実行されませんが、二つ目のifは別のif文なので実行されます)

問4:

h = 1
if h == 1:
    pass
elif h == 1:
    print("1です2")
else:
    print("1です3")
if h == 1:
    print("1です4")
答えを見る
A:1です4 (elifが実行されそうですが、ifの条件が先に満たされており、passで何もしない命令が出されていますので、同じif文の中では何も実行されません)

問5:

h = "りんご"
if h == "みかん":
    print("みかんです")
else
    print("りんごです")
答えを見る
A:エラー (elseの後に「:」をつけ忘れています。これはよく発生するエラーなので、if文でエラーが発生したら、インデントと「:」のつけ忘れをまず、疑いましょう)

>プログラミング情報サイト「In-Output」

プログラミング情報サイト「In-Output」

当サイトではプログラミング言語の情報を発信しています。
HTMLやCSSのマークアップ言語の学習方法や解説、WordPressでのサイト開設方法、python等のプログラミング言語を使用して日頃の作業の効率化等、皆様のお役に立てるサイトを目指しています。

CTR IMG