Python | レベル別練習問題:文字列の比較

Python
スポンサーリンク

以下は 「文字列の比較(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
解説: catcatalog の先頭部分なので“小さい”。


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()
Python

Q43

"apple" < "banana" を if 文で使い、「appleのほうが前」と表示せよ。
解答:

if "apple" < "banana":
    print("appleのほうが前")

Q44

ユーザーが入力した2つの文字列が同じなら "OK", 違うなら "NG" を出力せよ。
解答:

a = input()
b = input()
print("OK" if a == b else "NG")
Python

Q45

ユーザー入力を大文字化して "YES" と比べるプログラムを作れ。
解答:

ans = input().upper()
print(ans == "YES")
Python

Q46

辞書順で「前から3番目」の文字列を求める。

words = ["banana", "apple", "cherry", "date"]
Python

解答:

print(sorted(words)[2])  # cherry
Python

解説: sorted() は辞書順ソート。


Q47

小文字を無視してソートするには?
解答:

sorted(words, key=str.lower)
Python

Q48

"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" などを自然順に処理

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました