PR
スポンサーリンク

if文 (論理演算子 入れ子)| ゼロから始めるPythonプログラミング講座⑥ -補完編①-

スポンサーリンク
Python
スポンサーリンク

下記の記事の続きであり、補完的な記事になります。

前回の記事では、基本的なif文の利用方法について紹介しました。

他の人のYouTubeやブログでは、紹介していなかったような方法で利用されているのを、見たことがあるのではないでしょうか?

今回の記事では、他にも多くの利用方法がありますので、それらの利用方法について紹介していきます。

この記事をご覧になることで、どうやって利用すれば良いのかや利用する場合の注意点なども分かりますので、是非ご覧になっていってください。

スポンサーリンク

if文 | 論理演算子(AND OR)

論理演算子って聞いたら、凄い難しそうなこと言い始めたなと思うかもしれません。

ですが、安心してください。

要するに「AND (かつ)」と「OR (または)」というだけのことですので、気構えないようにしてください。

論理積演算子 (AND)

まず、あなたが結婚する相手や、恋人にしたい人の条件を頭の中に浮かべてください。

おそらく、殆どの人が複数の条件を想像されたと思います。

今想像された条件の中にも、絶対に譲れない条件が二つ以上ありませんか?

まさしく、それが「論理積演算子」なのです

そして、それはプログラムでは「AND」と表現されます

コードにすると下記のようになります。

if nensyu >= 10000000 and 30 > nenrei:

このコードで年収が1000万以上「であり」30歳未満という条件が完成します

改めて書いてみると、ただただ超人過ぎますね(笑)。

悪ふざけはここまでにして、要するに「絶対に譲ることのできない条件」として利用されていると、考えていただければ良いのかなと思います。

論理和演算子 (OR)

前項で考えていただいた、あなたが結婚する相手や、恋人にしたい人の条件の中に、絶対ではないけど、あったら嬉しいなという条件もあったと思います。

そういった、絶対条件ではないけれど、条件の中に一つでも当てはまるものが「あれば嬉しい」というのが、「論理和演算子」です

プログラムでは「OR」になります

コードにすると下記のようになります。

if shintyo >= 170 or 160 >= shintyo:

このコードで身長が170以上「または」160以下の場合という条件が完成です

「AND」とは違い、どちらか一方の条件を満たしていれば良いので、「174」や「153」などであっても条件を満たすことになります。

要するに提示した条件の「どれか一つでも満たしていればOK」といった場合に利用されます

複合型 (AND OR)

複合型は一つの条件式の中に「AND」と「OR」を共存させる場合に利用されます。

便利な反面、場合によっては条件が難しくなることがあります。

その時は、無理して使用せず後程紹介する「入れ子」を利用するのがおススメです

プログラミングするうえで、読みやすいのが一番です。

ここからは、実際にコードを見ていきましょう。

「AND」と「OR」を説明した時の条件をそのまま使って書いてみます。

if (nensyu >= 10000000 and 30 > nenrei) and (shintyo >= 170 or 160 >= shintyo):

このコードで年収が1000万以上「かつ」30歳未満「で」、身長が160以下「または」170以上の場合のみ条件を満たすことになります。

前後の条件を囲っている「()」は必須です

無かった場合は、身長が160以下であれば条件を満たすことになってしまいます。

また、前後の条件をつなげている「and」は、前後の条件のどちらも満たす必要がある場合に利用されます

前後の条件のどちらか一方でも満たしていれば良い場合は「or」でも良いと思いますが、個人的には、そのような場合は条件を見直す方が良いという考えです。

なぜなら、上記のコードのような場合では、前後での条件の絞り方が全然違うためです。

実際に論理演算子を利用したコードを書いてみよう!

実際に論理演算子を利用したコードを書いてみましょう。

①「VS Code」を起動し、新規作成でファイルを作成します。

②下記のコードを入力します。

nensyu = 12000000
nenrei = 29
shintyo = 180
if (nensyu >= 10000000 and 30 > nenrei) and (shintyo >= 170 or 160 >= shintyo):
    print("あなたは超人ですね!")
else:
    print("処理完了!")

③コマンドプロンプトを起動し、下記のコマンドを入力します。

python ファイル名.py

④下記画像のように表示されていればOKです。

⑤下記のようにコードを変更します。

nenrei = 31

⑥下記画像のように表示されていればOKです。

if文 | 入れ子とは?

if文では、良く「入れ子」と言われる方法が利用されているコードがあります。

ここでは「入れ子」について紹介してきます。

入れ子 (if文の中にif文)について

この記事で言う「入れ子」とは、if文の中にif文を記述することです。

if文の性質上「入れ子」は、比較的使いやすい方法であり、規模が大きくなればなるほどに利用されることが多い印象です。

実際に「入れ子」を利用したif文は下記の様になります。

if number != 0:
    # numberが0でない場合に処理される
    if number > 0:
        print("入力された数値は正の整数です。")
    elif 0 > number:
        print("入力された数値は負の整数です。")
    else:
        print("整数を入力してください。")
else:
    print("入力された数値は0です。")

このコードでは、まず1行目でnumberが「0ではない」かどうかを確認しています。

numberが「0である」場合、else部分の処理を実行します。

この場合のelse部分の処理は、一番下の行のことですので要注意です。

numberが「0ではない」場合、3行目で「0より大きい数値」であるかを確認しています。

5行目でnumberが「0より小さい数値」であるかを確認しています。

このように、良く利用されるのは一度の条件で絞り込めない場合が多いです。

また、プログラミング初心者の方であれば、複数の条件を繋げずに、あえて「入れ子」状態にすることで、可読性を上げることも可能です

入れ子を利用する時の注意点について

大変便利に利用することが出来る「入れ子」ですが、下記の様な注意点があります

  • 「入れ子」のし過ぎによる、可読性の低下
  • そもそも、「入れ子」が必要ないのにも関わらず、「入れ子」にしている

これらのようなことが発生することがあり得ます。

一つひとつ見ていきましょう

「入れ子」のし過ぎによる、可読性の低下

下記のコードが代表的な例です。

number = 8

if number != 0:
    if number != 1:
        if number != 2:
            if number != 3:
                if number != 4:
                    if number != 5:
                        if number != 6:
                            if number != 7:
                                if number == 8:
                                    print("処理完了!")
else:
    print("特になし")                                    

見ていただいたら分かると思いますが、第一印象で「見にくい」と思いませんでしたか?

まさしく、これが可読性が低下してしまっている状態の「入れ子」です

今は、殆どが条件しか記述していないため比較的読めますが、各々の条件に対して処理が肉付けされていくと、信じられない程に読みにくくなります

「入れ子」が必要ないのにも関わらず、「入れ子」にしている

下記のコードが代表的な例です。

number = 8

if number != 0:
    if number == 8:
        print("処理完了!")
else:
    print("特になし")                                

先ほどのコードを見やすく条件を減らし、インデントを調整したものになります。

上記のコードを説明させていただきますと、numberが「0ではない」ことを確認したのち、「8である」ことを確認しています。

numberが「8である」ことを確認する前に「0ではない」ことを確認する必要ないと思いませんか?

まさしく、これが「入れ子」が必要ないのにも関わらず、「入れ子」にしている状態です。

また、プログラミング初心者は「入れ子」が多くなりがちなのですが、慣れてきたら纏めて条件付け出来るようにしていきましょう。

実際に入れ子を利用したコードを書いてみよう!

実際に「入れ子」を利用したコードを書いてみましょう。

①「VS Code」を起動し、新規作成でファイルを作成します。

②下記のコードを入力します。

number = int(input("整数を入力してください。"))

if number != 0:
    # numberが0でない場合に処理される
    if number > 0:
        print("入力された数値は正の整数です。")
    elif 0 > number:
        print("入力された数値は負の整数です。")
    else:
        print("整数を入力してください。")
else:
    print("入力された数値は0です。")

③コマンドプロンプトを起動し、下記のコマンドを入力します。

python ファイル名.py

④下記画像のように表示されていればOKです。

因みに、普通であれば「整数を入力してください。」は返ってこないですので、気にしなくて大丈夫です。

まとめ

今回はif文の「論理演算子」と「入れ子」について紹介してきました。

比較的かみ砕いて説明出来たと思うのですが、どうでしょうか?

正直なところ、応用とは言いましたが、必須と言える位に両者とも使用率が高いです

特に、仕事で他人が作成したコードを読み解く時には、欠かせない部分になりますので、頑張って覚えるようにしてください

今回は補完編と題してやってきましたが、字数の関係上紹介できていないものもあります。

1記事で長々書かれていても、読み手もしんどいと思いますので、ご了承ください。

では、次回の補完編②でお会いしましょう!

タイトルとURLをコピーしました