比較以外の条件式って何?
if の条件部には a < b や x == 10 のような比較演算だけでなく、True/False を返す式(= ブール値を返す式)なら何でも使えるということです。例えば「文字列が全部数字か?」「リストが空か?」といった判定がそのまま条件になります。
よく使う「比較以外」の判定(簡単な一覧)
str.isdecimal():文字列が0–9 の数字だけで構成されているかを返す。例:"123".isdecimal()→True。※参考ページの主要例。str.isalpha():文字だけ(アルファベット)か?str.isalnum():英字か数字(混在可)で少なくとも1文字あるか?in演算子:文字列やリストに要素が含まれているか(例:"a" in "apple")。- 空かどうかの判定(truthiness):空文字
""、空リスト[]、0、Noneは False 扱い。これを利用してif my_list:で「空でなければ処理する」と書けます。
例題 1 — isdecimal() を使う(基本)
入力された文字列が数字だけなら「数字です」と表示する。
s = input("文字列を入力してください:")
if s.isdecimal():
print(s, "は数字です")
else:
print(s, "は数字ではありません")
Python動作例:
- 入力
123→123 は数字です - 入力
12a→12a は数字ではありません
(isdecimal() は Unicode の一部の数字表記など細かい仕様がありますが、一般的な半角数字 0-9 の判断には使えます。)
例題 2 — isalpha() / isalnum() の違い
tests = ["abc", "a1", "123", ""]
for t in tests:
print(t, "isalpha:", t.isalpha(), "isdigit:", t.isdigit(), "isalnum:", t.isalnum())
Python出力(イメージ):
"abc"→isalpha: True,isalnum: True"a1"→isalpha: False,isalnum: True"123"→isalpha: False,isalnum: True""→ すべてFalse(空文字はFalse)
→isalnum()は「英字か数字(混在可)で、かつ1文字以上」を判定します。
例題 3 — in で含まれるかチェック
word = "banana"
if "na" in word:
print("na が含まれています")
else:
print("含まれていません")
Python→ in は直感的でよく使います(文字列・リスト・タプルなどで動く)。
例題 4 — 空かどうか(truthiness)を使う
items = []
if items:
print("要素があります")
else:
print("空です")
Pythonitems = []のときはelseが実行される(空のシーケンスは False 扱い)。if my_string:を使えば「空文字でないなら〜」という判定になります。
少し便利テク:all() / any() と組み合わせる
複数項目をまとめて判定したいなら all()(全て True)や any()(いずれか True)を使えます。
words = ["123", "456", "78a"]
if all(w.isdecimal() for w in words):
print("すべて数字")
else:
print("数字でないものが混ざっている")
Python(all() / any() の使い方は実務でよく出ます。)
よくある間違い・注意点
isdecimal()とisdigit()/isnumeric()は微妙に違う(Unicode の扱いなど)。一般的な0-9を判定するならisdecimal()で問題ない場面が多いですが、厳密には公式ドキュメントを参照してください。if s:で空文字チェックをしているとき、Noneと空文字の区別をしたい場合はif s is None:など明示的チェックを使うこと。- ユーザー入力は必ず「想定外」の値が来る前提で扱う(例:空文字、スペース、全角数字など)。必要なら
strip()や正規表現で整形・検証する。
練習(すぐ試せるミニ問題)
- 入力された文字列が英字だけかどうか判定するプログラムを書け。(ヒント:
isalpha()) - 入力が空文字(ただの Enter)なら「入力が空です」と表示するプログラムを書け。
- カンマ区切りの数字列(例
"10,20,30")が与えられたら、すべての要素が数字かどうかをチェックして True/False を出す。
まとめ(初心者向けワンポイント)
ifの条件部には「True/False を返す式」なら何でも使える。比較演算子に限らない。- 文字列の組み込みメソッド(
isdecimal()、isalpha()、isalnum()等)や、in、空かどうかの判定(truthiness)を活用すると条件分岐がずっと書きやすくなる。
