Python | 比較以外の条件式

Python
スポンサーリンク

Ifの条件に使えるもの

はじめての人がつまずきやすいのは、「ifの条件には何を書けばいいの?」というところ。結論はシンプルで、条件には「True(真)かFalse(偽)を返すもの」なら何でも使えます。比較だけじゃなく、文字列のメソッドなども条件に使えるんです。


ブール値と条件式の基本

  • ブール値(True/False):
    プログラムが「はい/いいえ」を判断するための特別な値。Trueなら実行、Falseならスキップ。
  • 比較は一例:
    x < 10name == "Taro" は、評価すると必ずTrueFalseになります。
x = 7
if x < 10:          # Trueなので中が実行される
    print("10未満です")
Python
  • 関数・メソッドもOK:
    isdecimal()startswith() のように、結果がTrue/Falseになるものは条件式に使えます。

文字列メソッドで条件判定

数字だけかを判定する(isdecimal)

  • ポイント:
    文字列が「全部が0〜9の数字」でできていればTrue。1文字でも数字以外が混ざるとFalse
print("123".isdecimal())   # True
print("12a".isdecimal())   # False
print("0123".isdecimal()) # True(全角数字もOK)
Python

アルファベットだけか(isalpha)

  • ポイント:
    文字列が「全部が文字」であればTrue。数字や記号が混ざるとFalse
print("abc".isalpha())     # True
print("abc123".isalpha())  # False
Python

英数字だけか(isalnum)

  • ポイント:
    文字と数字だけならTrue。空白や記号があるとFalse
print("abc123".isalnum())  # True
print("abc-123".isalnum()) # False(-が含まれている)
Python

先頭や末尾で判定(startswith / endswith)

  • ポイント:
    文字列が特定の語で始まる/終わるかを確認。
s = "hello_world.py"
print(s.endswith(".py"))       # True
print(s.startswith("hello"))   # True
Python

例題で身につける

例題1:入力が数字なら足し算、そうでなければ注意

a = input("1つ目の数字を入力してください: ")
b = input("2つ目の数字を入力してください: ")

if a.isdecimal() and b.isdecimal():
    # 文字列を整数に変換して計算
    total = int(a) + int(b)
    print("合計は", total)
else:
    print("数字だけを入力してください")
Python
  • 学び:
    • andで2つの条件を同時に満たすかチェック。
    • isdecimal()で数字か判定 → int()で数値に変換。

例題2:ユーザー名のチェック(英数字のみ、10文字以内)

username = input("ユーザー名を入力してください: ")

if username.isalnum() and len(username) <= 10:
    print("登録できます")
else:
    print("英数字のみ、10文字以内で入力してください")
Python
  • 学び:
    • isalnum()で英数字だけか判定。
    • len()で文字数をチェック。
    • 条件を組み合わせて「ルール」を表現。

例題3:ファイル拡張子で動作を切り替える

filename = input("ファイル名を入力してください: ")

if filename.endswith(".txt"):
    print("テキストとして読み込みます")
elif filename.endswith(".csv"):
    print("CSVとして読み込みます")
else:
    print("未対応の形式です")
Python
  • 学び:
    • if / elif / elseで分岐を増やす。
    • endswith()で拡張子を安全に判定。

つまずきやすいポイント

  • 数字判定の違いに注意:
    isdecimal()は「10進数字のみ」。通貨記号や上付き・下付き数字などが混ざるとFalse。初心者は「普通の数字だけ?」と覚えてOK。
  • 空白や記号が混じると落ちる:
    isalnum()はハイフン、空白、ピリオドが入るとFalse。IDやユーザー名の仕様次第で許可したい記号があるなら、個別にチェックが必要。
s = "user-name"
print(s.isalnum())  # False(-があるため)
Python
  • 数値変換は判定のあと:
    いきなりint(a)すると、数字じゃない場合にエラー。必ずisdecimal()などで確認してから変換する。

ミニ演習(手を動かす用)

  • 演習1:年齢入力のバリデーション
age = input("年齢を数字で入力してください: ")

if age.isdecimal() and 0 <= int(age) <= 120:
    print("入力ありがとうございます")
else:
    print("0〜120の数字で入力してください")
Python
  • 演習2:パスワードの簡易チェック(8文字以上、英数字のみ)
pwd = input("パスワードを入力してください: ")

if len(pwd) >= 8 and pwd.isalnum():
    print("OK")
else:
    print("8文字以上で、英数字のみを使ってください")
Python
  • 演習3:メッセージが「OK」から始まるか判定
msg = input("メッセージ: ")
if msg.startswith("OK"):
    print("承認しました")
else:
    print("形式が違います")
Python

まとめと次の一歩

  • まとめ:
    ifの条件は「True/Falseを返すもの」なら何でも使える。比較演算子だけでなく、文字列メソッド(isdecimal, isalpha, isalnum, startswith, endswithなど)を使うと、入力チェックや分岐がぐっと楽になります。
  • 次の一歩:
    実際に入力を変えてどんなときにTrue/Falseになるか試す。わからなくなったら「印字して確かめる」を習慣に。
s = input("入力: ")
print("isdecimal:", s.isdecimal())
print("isalpha:", s.isalpha())
print("isalnum:", s.isalnum())
Python
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました