では、Python文字列演算子・操作に関する練習問題をレベル別(基礎・中級・応用)に50問作り、それぞれに解答と解説をつけます。初心者がすぐに試せるよう、Pythonでそのまま実行できる形式にします。
レベル分け
- 基礎(1〜20問):文字列の連結、繰り返し、
in演算子など基本操作 - 中級(21〜35問):文字列の比較、大文字小文字変換、スライスなど
- 応用(36〜50問):複雑な文字列操作、フォーマット、検索・置換、実務的な例
1. 基礎編(1〜20問)
問題例(抜粋)
"Hello"と"World"を連結して出力せよ。"Hi"を 4 回繰り返して出力せよ。"apple"が"pineapple"に含まれるか確認せよ。"cat"が"concatenate"に含まれるか確認せよ。"Python"の文字数を数えよ。"Python"の先頭1文字を出力せよ。"Python"の末尾1文字を出力せよ。"Python"の1文字目から3文字目までを切り出せ。"Python"の最後の3文字を切り出せ。"Python"を大文字に変換せよ。
(11〜20問も同様に文字列の基本操作を扱う)
2. 中級編(21〜35問)
"Apple"と"apple"の大小比較をせよ。"banana"と"apple"の大小比較をせよ。"Hello World"を" "で分割せよ。"Hello World"の"World"部分だけ取り出せ。"Python"のyの位置を取得せよ。"Python"に"3"を追加して"Python3"にせよ。"Python"を逆順にせよ。" Python "の前後の空白を削除せよ。"python"をタイトル形式"Python"に変換せよ。"Hello World"に"!"が含まれるか確認せよ。
(31〜35問も文字列の変換・検索・分割・スライスを扱う)
3. 応用編(36〜50問)
"apple,banana,cherry"をリストに変換せよ。"2025-11-05"から年、月、日を取り出せ。"Hello World"のlをLに置換せよ。"Hello World"の単語数を数えよ。"I have 2 apples"から数字だけを取り出せ。"2025-11-05"を"05/11/2025"に変換せよ。"Python"の各文字を1文字ずつ出力せよ。"a-b-c-d"を"a/b/c/d"に置換せよ。"PythonPython"の"Python"を"Java"に置換せよ。"Hello World"をリバースし、大文字に変換せよ。- ユーザーから入力された文字列が
"exit"なら終了するプログラムを作れ。 " trim this "の前後空白を削除し、文字数を数えよ。"python,java,c++"をカンマ区切りでリスト化して、3番目の言語を取り出せ。"Hello World"の"World"を"Python"に置換せよ。"abc123def456"から数字だけを取り出して連結せよ。
基礎編 解答例(1〜20問)
# ------------------------------
# 基礎編(1〜20問)解答例
# ------------------------------
# 1. "Hello" と "World" を連結
print("1:", "Hello" + "World") # HelloWorld
# 解説: + 演算子で文字列同士をつなげる
# 2. "Hi" を 4 回繰り返す
print("2:", "Hi" * 4) # HiHiHiHi
# 解説: * 演算子で文字列を整数回繰り返せる
# 3. "apple" が "pineapple" に含まれるか確認
print("3:", "apple" in "pineapple") # True
# 解説: in 演算子で部分文字列が含まれるか確認
# 4. "cat" が "concatenate" に含まれるか
print("4:", "cat" in "concatenate") # True
# 5. "Python" の文字数
print("5:", len("Python")) # 6
# 解説: len() で文字列の長さを取得
# 6. "Python" の先頭1文字
print("6:", "Python"[0]) # P
# 解説: インデックス0で先頭文字を取得
# 7. "Python" の末尾1文字
print("7:", "Python"[-1]) # n
# 解説: -1 で最後の文字を取得
# 8. "Python" の1文字目から3文字目まで
print("8:", "Python"[0:3]) # Pyt
# 解説: スライス[start:end]で文字列の部分取得
# 9. "Python" の最後の3文字
print("9:", "Python"[-3:]) # hon
# 10. "Python" を大文字に変換
print("10:", "Python".upper()) # PYTHON
# 解説: .upper() で大文字に変換
# 11. "Python" を小文字に変換
print("11:", "Python".lower()) # python
# 解説: .lower() で小文字に変換
# 12. "python" をタイトル形式に
print("12:", "python".title()) # Python
# 解説: .title() で単語の先頭を大文字に変換
# 13. "Hello World" に "!" が含まれるか
print("13:", "!" in "Hello World") # False
# 14. "Python" の 'o' の位置を取得
print("14:", "Python".index("o")) # 4
# 解説: .index() で指定文字の最初の位置を取得
# 15. "Python" に "3" を追加
print("15:", "Python" + "3") # Python3
# 16. "Python" を逆順に
print("16:", "Python"[::-1]) # nohtyP
# 17. " Python " の前後の空白を削除
print("17:", " Python ".strip()) # Python
# 解説: .strip() で前後の空白を削除
# 18. "Python" の文字を1文字ずつ出力
for c in "Python":
print("18:", c)
# 解説: forループで文字列の各文字を取得
# 19. "Python" の文字列をリスト化
print("19:", list("Python")) # ['P','y','t','h','o','n']
# 解説: list() で文字列を文字単位のリストに変換
# 20. "Hello" と "World" を空白を入れて連結
print("20:", "Hello" + " " + "World") # Hello World
Pythonポイントまとめ(基礎編)
- 連結は
+:文字列同士をつなげる - 繰り返しは
*:文字列 × 整数 - 文字列の長さは
len() - 部分文字列の取得はスライス
[start:end] - 文字列の大文字・小文字変換は
.upper()/.lower()/.title() - 含まれるかチェックは
in/not in - 文字列を逆順にしたいときは
[:: -1] - 文字列をリスト化して1文字ずつ操作できる
中級編 解答例(21〜35問)
# ------------------------------
# 中級編(21〜35問)解答例
# ------------------------------
# 21. "Apple" と "apple" の比較
a = "Apple"
b = "apple"
print("21 a==b:", a == b) # False
print("21 a<b :", a < b) # True
# 解説: 大文字は小文字より文字コードが小さいので、"Apple" < "apple" が True
# 22. "banana" と "apple" の比較
print("22:", "banana" > "apple") # True
# 解説: アルファベット順で b > a だから True
# 23. "Hello World" を空白で分割
text = "Hello World"
words = text.split(" ")
print("23:", words) # ['Hello', 'World']
# 24. "Hello World" の "World" 部分だけ取り出す
print("24:", text.split(" ")[1]) # 'World'
# 25. "Python" の 'y' の位置を取得
print("25:", "Python".index("y")) # 1
# 26. "Python" に "3" を追加
print("26:", "Python" + "3") # Python3
# 27. "Python" を逆順に
print("27:", "Python"[::-1]) # nohtyP
# 28. " Python " の空白を削除
print("28:", " Python ".strip()) # 'Python'
# 29. "python" をタイトル形式に
print("29:", "python".title()) # 'Python'
# 30. "Hello World" に "!" が含まれるか
print("30:", "!" in "Hello World") # False
# 31. "Hello World" を大文字に
print("31:", "Hello World".upper()) # HELLO WORLD
# 32. "HELLO WORLD" を小文字に
print("32:", "HELLO WORLD".lower()) # hello world
# 33. "python" の長さを取得
print("33:", len("python")) # 6
# 34. "Python" の1文字目と最後の文字を結合
p = "Python"
print("34:", p[0] + p[-1]) # Pn
# 35. "Python" に含まれる文字 'o' の数を数える
print("35:", "Python".count("o")) # 1
Python応用編 解答例(36〜50問)
# ------------------------------
# 応用編(36〜50問)解答例
# ------------------------------
# 36. "apple,banana,cherry" をリストに変換
fruits = "apple,banana,cherry".split(",")
print("36:", fruits) # ['apple', 'banana', 'cherry']
# 37. "2025-11-05" から年、月、日を取り出す
date = "2025-11-05".split("-")
year, month, day = date
print("37:", year, month, day) # 2025 11 05
# 38. "Hello World" の 'l' を 'L' に置換
print("38:", "Hello World".replace("l","L")) # HeLLo WorLd
# 39. "Hello World" の単語数
print("39:", len("Hello World".split())) # 2
# 40. "I have 2 apples" から数字だけ取り出す
import re
s = "I have 2 apples"
numbers = re.findall(r'\d+', s)
print("40:", "".join(numbers)) # 2
# 41. "2025-11-05" を "05/11/2025" に変換
d = "2025-11-05".split("-")
formatted = f"{d[2]}/{d[1]}/{d[0]}"
print("41:", formatted) # 05/11/2025
# 42. "Python" の各文字を1文字ずつ出力
for c in "Python":
print("42:", c)
# 43. "a-b-c-d" を "a/b/c/d" に置換
print("43:", "a-b-c-d".replace("-","/")) # a/b/c/d
# 44. "PythonPython" の "Python" を "Java" に置換
print("44:", "PythonPython".replace("Python","Java")) # JavaJava
# 45. "Hello World" をリバースして大文字に
print("45:", "Hello World"[::-1].upper()) # DLROW OLLEH
# 46. 入力が "exit" なら終了するプログラム
# # 以下は実行すると終了するのでコメントアウト
# user_input = input("入力してください: ")
# if user_input == "exit":
# print("終了します")
# 47. " trim this " の空白削除と文字数
trimmed = " trim this ".strip()
print("47:", trimmed, len(trimmed)) # trim this 9
# 48. "python,java,c++" をリスト化して3番目を取り出す
langs = "python,java,c++".split(",")
print("48:", langs[2]) # c++
# 49. "Hello World" の "World" を "Python" に置換
print("49:", "Hello World".replace("World","Python")) # Hello Python
# 50. "abc123def456" から数字だけ取り出して連結
s = "abc123def456"
nums = "".join(re.findall(r'\d+', s))
print("50:", nums) # 123456
Python応用ポイント
split()とjoin()で文字列とリストを変換できるreplace()で文字列の置換[::-1]で文字列の逆順- 正規表現
re.findallで数字や特定文字を抽出可能 - f文字列や
.strip()で文字列整形ができる
