より複雑なif文

投稿日: 2024年3月22日

if文でandとorを両方使う場合、複数の条件を組み合わせてより複雑な条件分岐を作成できます。
ただし、複数の論理演算子を使用するときは、条件の評価順序を明確にするために括弧()を使うことが良い実践です。
これにより、プログラムの意図を明確にし、読みやすく保つことができます。

以下の例では、年齢(age)と学生かどうか(is_student)、そして収入(income)に基づいて条件分岐をしています。

age = 24
is_student = True
income = 30000

if (age > 18 and is_student) or income > 50000:
    print("割引が適用されます。")
else:
    print("割引は適用されません。")

この条件分岐では、以下の2つの条件のいずれかが満たされた場合に「割引が適用されます。」と出力します。

  1. age > 18 and is_studentがTrueである場合(つまり、18歳を超える学生である場合)
  2. income > 50000がTrueである場合(つまり、収入が50,000を超える場合)

and演算子は、両方の条件がTrueである場合にTrueを返し、or演算子は、いずれかの条件がTrueである場合にTrueを返します。この例では、18歳以上で学生であるか、または収入が50,000以上のいずれか一方を満たせば割引が適用されます。

データが有るか無いかの判断方法

Pythonでデータがあるかないかを判断する場合、主にリスト、文字列、辞書などのコンテナ型のデータが空かどうかを確認します。これは非常に一般的な操作で、Pythonのif文を使って簡単に行うことができます。

リスト、文字列、辞書での判断

これらの型でデータが存在するかどうかを判断するには、直接コンテナを条件式に使用します。
Pythonでは空のリスト[]、空の文字列””、空の辞書{}はすべてFalseと評価されます。そのため、これらのコンテナに何かデータが含まれている場合はTrueと評価され、条件分岐で利用できます。

リストの例

my_list = [1, 2, 3]

if my_list:
    print("リストにはデータがあります。")

文字列の例

my_string = "Hello"

if my_string:
    print("文字列にはデータがあります。")

辞書型の例

my_dict = {"name": "Alice"}

if my_dict:
    print("辞書にはデータがあります。")

Noneの判断

NoneはPythonで「何もない」状態を表す特別な値です。
変数がNoneかどうかをチェックするには、is Noneまたはis not Noneを使用します。

my_var = None

if my_var is None:
    print("変数はNoneです。")
else:
    print("変数には何らかのデータがあります。")

is not Noneを使用する例

def get_user_info(user_id):
    # ユーザー情報を取得する仮の関数
    # この例では、user_idが1の場合にのみユーザー情報を返し、それ以外はNoneを返します
    if user_id == 1:
        return {"name": "aoyama", "age": 30}
    else:
        return None

# ユーザーIDを使ってユーザー情報を取得
user_info = get_user_info(1)

# 取得した情報がNoneでないかチェック
if user_info is not None:
    print("ユーザー情報が見つかりました:", user_info)
else:
    print("指定されたユーザー情報は存在しません。")

この例では、get_user_info関数はユーザーIDに基づいてユーザー情報を返しますが、該当するユーザーがいない場合はNoneを返します。
user_infoがNoneでないことをチェックすることで、関数が実際にユーザー情報を返した場合のみ処理を進めることができます。

記事