Python | 比較以外の条件式

Python
スポンサーリンク

比較以外の条件式って何?

if の条件部には a < bx == 10 のような比較演算だけでなく、True/False を返す式(= ブール値を返す式)なら何でも使えるということです。例えば「文字列が全部数字か?」「リストが空か?」といった判定がそのまま条件になります。


よく使う「比較以外」の判定(簡単な一覧)

  • str.isdecimal():文字列が0–9 の数字だけで構成されているかを返す。例:"123".isdecimal()True。※参考ページの主要例。
  • str.isalpha():文字だけ(アルファベット)か?
  • str.isalnum():英字か数字(混在可)で少なくとも1文字あるか?
  • in 演算子:文字列やリストに要素が含まれているか(例:"a" in "apple")。
  • 空かどうかの判定(truthiness):空文字 ""、空リスト []0NoneFalse 扱い。これを利用して if my_list: で「空でなければ処理する」と書けます。

例題 1 — isdecimal() を使う(基本)

入力された文字列が数字だけなら「数字です」と表示する。

s = input("文字列を入力してください:")
if s.isdecimal():
    print(s, "は数字です")
else:
    print(s, "は数字ではありません")
Python

動作例:

  • 入力 123123 は数字です
  • 入力 12a12a は数字ではありません

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("空です")
Python
  • items = [] のときは 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() の使い方は実務でよく出ます。)


よくある間違い・注意点

  1. isdecimal()isdigit() / isnumeric() は微妙に違う(Unicode の扱いなど)。一般的な 0-9 を判定するなら isdecimal() で問題ない場面が多いですが、厳密には公式ドキュメントを参照してください。
  2. if s: で空文字チェックをしているとき、None と空文字の区別をしたい場合は if s is None: など明示的チェックを使うこと。
  3. ユーザー入力は必ず「想定外」の値が来る前提で扱う(例:空文字、スペース、全角数字など)。必要なら strip() や正規表現で整形・検証する。

練習(すぐ試せるミニ問題)

  1. 入力された文字列が英字だけかどうか判定するプログラムを書け。(ヒント:isalpha()
  2. 入力が空文字(ただの Enter)なら「入力が空です」と表示するプログラムを書け。
  3. カンマ区切りの数字列(例 "10,20,30")が与えられたら、すべての要素が数字かどうかをチェックして True/False を出す。

まとめ(初心者向けワンポイント)

  • if の条件部には「True/False を返す式」なら何でも使える。比較演算子に限らない。
  • 文字列の組み込みメソッド(isdecimal()isalpha()isalnum() 等)や、in、空かどうかの判定(truthiness)を活用すると条件分岐がずっと書きやすくなる。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました