以下は 「文字列の比較(string compare)」をテーマにした、プログラミング初心者〜中級者向けの練習問題50問セット です。==・!=・<・>・大文字小文字の扱い・数値文字列の比較・辞書順など、段階的に身につく構成になっています。
各問題に 解答例・解説 を付けています。
基礎編(Q1〜Q15)
Q1
"apple" == "apple" の結果は?
解答: True
解説: 文字列がまったく同じなので True。
Q2
"apple" == "Apple" の結果は?
解答: False
解説: 大文字と小文字は区別される。
Q3
"apple" != "Apple" の結果は?
解答: True
解説: 等しくないので True。
Q4
"123" == 123 の結果は?
解答: False(または TypeError)
解説: 型が違う。文字列と数値は別物。
Q5
"123" == str(123) の結果は?
解答: True
解説: str(123) は "123"。同じ文字列。
Q6
"a" < "b" の結果は?
解答: True
解説: アルファベット順で 'a' は 'b' より前。
Q7
"z" > "x" の結果は?
解答: True
解説: 'z' は 'x' より後。
Q8
"A" < "a" の結果は?
解答: True
解説: 大文字の方が小さいコード(ASCII 値)を持つ。
Q9
"cat" < "catalog" の結果は?
解答: True
解説: cat は catalog の先頭部分なので“小さい”。
Q10
"car" < "cat" の結果は?
解答: True
解説: 3文字目 'r' と 't' を比べると 'r' < 't'。
Q11
"abc" < "abd" の結果は?
解答: True
解説: 3文字目 'c' と 'd' の比較。
Q12
"python" == "PYTHON".lower() の結果は?
解答: True
解説: .lower() で "python" に変換される。
Q13
"PYTHON".upper() == "python".upper() の結果は?
解答: True
解説: 両方 "PYTHON" に変換される。
Q14
" hello".strip() == "hello" の結果は?
解答: True
解説: strip() で余分な空白が消える。
Q15
"yes".lower() == "YES".lower() の結果は?
解答: True
解説: 大小をそろえて比較すれば等しい。
初級応用(Q16〜Q30)
Q16
"2" < "10" の結果は?
解答: False
解説: 文字列比較は1文字ずつ。'2' > '1'。
Q17
int("2") < int("10") の結果は?
解答: True
解説: 数値に変換すれば通常の大小比較。
Q18
"apple" < "banana" の結果は?
解答: True
解説: アルファベット順で a が b より前。
Q19
"Banana" < "apple" の結果は?
解答: True
解説: 大文字 'B' は小文字 'a' より小さい。
Q20
"abc" <= "abc" の結果は?
解答: True
解説: 同じ文字列も「以下」に含まれる。
Q21
"abc" <= "abcd" の結果は?
解答: True
解説: "abc" は "abcd" の一部なので前にくる。
Q22
"1234" > "99" の結果は?
解答: False
解説: '1' < '9' のため。
Q23
"09" < "10" の結果は?
解答: True
解説: '0' < '1'。
Q24
"Hello".startswith("He") の結果は?
解答: True
解説: "He" で始まっている。
Q25
"Hello".endswith("lo") の結果は?
解答: True
解説: "lo" で終わっている。
Q26
"apple" in "pineapple" の結果は?
解答: True
解説: "apple" は "pineapple" に含まれる。
Q27
"App" in "apple" の結果は?
解答: False
解説: 大文字・小文字が違う。
Q28
"App".lower() in "apple".lower() の結果は?
解答: True
解説: 両方小文字にすれば一致する。
Q29
"abc" < "abd" と "abd" < "abe" の両方 True になるか?
解答: True
解説: 辞書順で連続的に並んでいる。
Q30
"abc" < "Abc" の結果は?
解答: False
解説: 'a' > 'A' だから。
中級(Q31〜Q40)
Q31
"apple" < "appLe" の結果は?
解答: False
解説: 4文字目 'l' と 'L' 比較 → 'l' > 'L'。
Q32
"100" < "99" の結果は?
解答: True
解説: '1' < '9' → 文字列では True。
Q33
"100" < "99" を数値的に比較するコードを書け。
解答: int("100") < int("99") → False
解説: 数値変換すれば通常の大小になる。
Q34
"apple" == "APPLE".casefold() の結果は?
解答: True
解説: .casefold() は .lower() より強力な小文字化。
Q35
"ß".lower() == "ss" の結果は?
解答: False
解説: .lower() では変換されないが、.casefold() なら True。
Q36
"ß".casefold() == "ss" の結果は?
解答: True
解説: casefold() は特殊文字にも対応。
Q37
日本語 "あ" < "い" の結果は?
解答: True(多くの環境では)
解説: Unicode コード順で 'あ' < 'い'。
Q38
"カ" < "ガ" の結果は?
解答: True(Unicode 上では)
解説: 濁点付きは後のコード。
Q39
"A10" < "A2" の結果は?
解答: True
解説: '1' < '2' だから "A10" が前にくる(自然順ではない)。
Q40
自然な数順で "A10" と "A2" を比べるには?
解答: import re; from natsort import natsorted(例)
解説: 「自然順ソート」ライブラリを使うと人間の感覚に近くなる。
上級・応用(Q41〜Q50)
Q41
文字列 "Python" の先頭文字を取り出して "P" と等しいかを調べよ。
解答: "Python"[0] == "P" → True
解説: インデックスで1文字目を取得。
Q42
文字列 "apple" と "APPLE" を「大文字小文字を無視して」比較する関数を作れ。
解答:
def equal_ignore_case(a, b):
return a.lower() == b.lower()
PythonQ43
"apple" < "banana" を if 文で使い、「appleのほうが前」と表示せよ。
解答:
if "apple" < "banana":
print("appleのほうが前")
Q44
ユーザーが入力した2つの文字列が同じなら "OK", 違うなら "NG" を出力せよ。
解答:
a = input()
b = input()
print("OK" if a == b else "NG")
PythonQ45
ユーザー入力を大文字化して "YES" と比べるプログラムを作れ。
解答:
ans = input().upper()
print(ans == "YES")
PythonQ46
辞書順で「前から3番目」の文字列を求める。
words = ["banana", "apple", "cherry", "date"]
Python解答:
print(sorted(words)[2]) # cherry
Python解説: sorted() は辞書順ソート。
Q47
小文字を無視してソートするには?
解答:
sorted(words, key=str.lower)
PythonQ48
"apple" < "あ" の結果は?
解答: True
解説: ASCII 文字(英字)は日本語より小さいコード。
Q49
日本語の自然順(五十音順)で比較したい場合のヒントは?
解答: locale.strcoll() を使う。
解説: ロケール設定による比較が可能。
Q50
「文字列が数字だけで構成されている」ことを判定するには?
解答:
"12345".isdigit() # True
"12a".isdigit() # False
Pythonまとめ
| 比較方法 | 意味 | 例 |
|---|---|---|
== | 完全一致 | "abc" == "abc" |
!= | 一致しない | "abc" != "ABC" |
<, > | 辞書順比較 | "apple" < "banana" |
.lower(), .casefold() | 大小を無視した比較 | "Python".lower() == "python".lower() |
int() 変換 | 数値として比較 | int("2") < int("10") |
locale, natsort | 人間的な順序 | "A10" > "A2" などを自然順に処理 |
