📝 ステップ5: 文字列の操作
文字列を自在に操って、便利なプログラムを作ろう!
📖 このステップで学ぶこと
- 文字列の連結(+)と繰り返し(*)
- 文字列の長さを調べる(len関数)
- インデックスとスライス(文字の取り出し)
- f-string(フォーマット文字列)の活用
- よく使う文字列メソッド
📝 1. 文字列の基本(復習)
🔰 文字列とは?
前回のステップで学んだ「文字列」を簡単に復習しましょう。
文字列は、文字や文章を表すデータで、クォーテーションで囲んで作ります。
📘 文字列の作り方
| 書き方 | 例 | 説明 |
| ダブルクォート | “こんにちは” | 最も一般的な書き方 |
| シングルクォート | ‘こんにちは’ | ダブルと同じ意味 |
📝 基本の確認:
name = “太郎”
message = ‘こんにちは’
text = “Python is fun!”
print(name)
print(message)
print(text)
📤 実行結果:
太郎こんにちは
Python is fun!
💡 このステップで学ぶこと
文字列は作るだけでなく、様々な「操作」ができます。
このステップでは、文字列を繋げる・繰り返す・切り取る・変換する方法を学びます。
📘 文字列操作の一覧
| 操作 | イメージ | 使う場面 |
| 連結(+) | “山田” + “太郎” → “山田太郎” | 姓名を繋げる |
| 繰り返し(*) | “⭐” * 3 → “⭐⭐⭐” | 装飾、区切り線 |
| 切り取り(スライス) | “Python”[0:2] → “Py” | 一部を取り出す |
| 変換(メソッド) | “hello”.upper() → “HELLO” | 大文字/小文字変換 |
➕ 2. 文字列の連結
🔰 「連結」とは?
連結(れんけつ)とは、複数の文字列を繋げて1つにすることです。
+演算子を使います。
🎨 イメージで理解しよう
| 日常生活 | プログラミング |
| 紙を糊で繋げる | "山田" + "太郎" → "山田太郎" |
| 電車を連結する | "A" + "B" + "C" → "ABC" |
📝 基本的な連結
first_name = “太郎”
last_name = “山田”
# + で繋げる
full_name = last_name + first_name
print(full_name)
🔍 コードの意味:
| コード | 何をしている? | 結果 |
| last_name + first_name | “山田”と”太郎”を繋げる | “山田太郎” |
📤 実行結果:
山田太郎📝 スペースを入れて連結
姓と名の間にスペースを入れたい場合は、スペース文字列" "を挟みます。
last_name = “山田”
# スペースを挟んで連結
full_name = last_name + ” “ + first_name
print(full_name)
🔍 コードの意味:
| 式 | 計算過程 | 結果 |
| last_name + ” “ | “山田” + ” “ | “山田 “ |
| “山田 ” + first_name | “山田 ” + “太郎” | “山田 太郎” |
📤 実行結果:
山田 太郎📝 複数の文字列を連結
last_name = “山田”
first_name = “太郎”
greeting = “こんにちは、” + last_name + first_name + “さん!”
print(greeting)
📤 実行結果:
こんにちは、山田太郎さん!⚠️ 文字列と数字は直接連結できない!
文字列と数字(整数・小数)は、+で直接繋げることができません。
age = 25
# message = “私は” + age + “歳です” # TypeError!
解決方法
| 方法 | コード | 説明 |
| str()で変換 | “私は” + str(age) + “歳です” | 数字を文字列に変換してから連結 |
| f-string ⭐推奨 | f”私は{age}歳です” | 自動で変換してくれる |
# 方法1: str()で文字列に変換
message1 = “私は” + str(age) + “歳です”
print(message1)
# 方法2: f-string(おすすめ!)
message2 = f”私は{age}歳です”
print(message2)
📤 実行結果:
私は25歳です私は25歳です
💡 str()関数とは?
str()は、データを文字列型(string)に変換する関数です。
| 変換前 | コード | 変換後 |
| 25(整数) | str(25) | “25”(文字列) |
| 3.14(小数) | str(3.14) | “3.14”(文字列) |
✖️ 3. 文字列の繰り返し
🔰 「繰り返し」とは?
*演算子を使うと、文字列を指定した回数だけ繰り返すことができます。
🎨 イメージで理解しよう
| コード | 意味 | 結果 |
| “⭐” * 5 | ⭐を5回繰り返す | “⭐⭐⭐⭐⭐” |
| “-” * 10 | -を10回繰り返す | “———-“ |
| “Ha” * 3 | Haを3回繰り返す | “HaHaHa” |
📝 基本的な繰り返し
star = “⭐”
print(star * 5)
# 線を作る
line = “-“ * 20
print(line)
🔍 コードの意味:
| コード | 何をしている? |
| star * 5 | “⭐”を5回繰り返して”⭐⭐⭐⭐⭐”を作る |
| “-” * 20 | “-“を20回繰り返して区切り線を作る |
📤 実行結果:
⭐⭐⭐⭐⭐——————–
💡 実用例:装飾やメニューを作る
例1:タイトルを装飾する
title = “Python入門”
print(“=” * 30)
print(title)
print(“=” * 30)
📤 実行結果:
==============================Python入門
==============================
例2:簡単なメニューを作る
print(“=” * 40)
print(“【 メニュー 】”)
print(“=” * 40)
print(“1. 新規作成”)
print(“2. 開く”)
print(“3. 保存”)
print(“=” * 40)
📤 実行結果:
========================================【 メニュー 】
========================================
1. 新規作成
2. 開く
3. 保存
========================================
💡 繰り返しの使いどころ:
- 区切り線:
"-" * 30や"=" * 40で線を引く - 装飾:
"*" * 10や"🌟" * 5で見た目を華やかに - インデント:
" " * 4でスペースを作る
📏 4. 文字列の長さ – len()関数
🔰 len()関数とは?
len()関数を使うと、文字列の長さ(文字数)を取得できます。
「len」は「length(長さ)」の略です。
📘 len()関数の書き方
🔍 コードの意味:
| 部分 | 意味 |
| len | 長さを調べる命令(関数) |
| ( ) | 調べたいものを入れる場所 |
📝 文字数を数えてみよう
text1 = “Python”
text2 = “こんにちは”
text3 = “Hello, World!”
print(len(text1))
print(len(text2))
print(len(text3))
📤 実行結果:
65
13
🔍 文字数の数え方
| 文字列 | 数え方 | 結果 |
| “Python” | P-y-t-h-o-n(6文字) | 6 |
| “こんにちは” | こ-ん-に-ち-は(5文字) | 5 |
| “Hello, World!” | スペースや記号も含めて13文字 | 13 |
⚠️ 文字数カウントの注意点
以下のものも1文字としてカウントされます:
| 種類 | 例 | 説明 |
| スペース(空白) | ” “ | 半角スペースは1文字 |
| 記号 | “,” “!” “.” | カンマ、感嘆符、ピリオドなど |
| 日本語 | “あ” “漢” | 1文字ずつカウント |
| 絵文字 | “😀” | ※絵文字によっては2以上になることも |
💡 実用例:パスワードの長さチェック
len()関数は、入力チェックなどで実際によく使われます。
password = “abc123”
length = len(password)
print(f”パスワードの長さ: {length}文字”)
# 8文字以上かチェック
if length >= 8:
print(“✅ パスワードは十分な長さです”)
else:
print(f”❌ パスワードが短すぎます(あと{8 – length}文字必要)”)
🔍 コードの意味:
| コード | 意味 |
| len(password) | パスワードの文字数を数える |
| if length >= 8: | もし8文字以上なら…(if文は後で詳しく学びます) |
| 8 – length | あと何文字必要か計算 |
📤 実行結果:
パスワードの長さ: 6文字❌ パスワードが短すぎます(あと2文字必要)
💡 f-stringと組み合わせて使う
name = “山田太郎”
print(f”「{name}」は{len(name)}文字です”)
📤 実行結果:
「山田太郎」は4文字です🔢 5. インデックス – 文字の位置
🔰 インデックスとは?
文字列の中の各文字には、番号(インデックス)がついています。
この番号を使って、特定の位置の文字を取り出すことができます。
⚠️ 重要:Pythonのインデックスは0から始まる!
日常生活では「1番目、2番目…」と数えますが、
Pythonでは「0番目、1番目…」と数えます。これはプログラミングの慣習です。
📘 “Python”のインデックス
| 文字 | P | y | t | h | o | n |
| インデックス | 0 | 1 | 2 | 3 | 4 | 5 |
📝 インデックスで文字を取り出す
# インデックスで文字を取り出す
print(text[0]) # 0番目の文字
print(text[1]) # 1番目の文字
print(text[5]) # 5番目の文字
🔍 コードの意味:
| コード | 意味 | 結果 |
| text[0] | 0番目(最初)の文字を取得 | “P” |
| text[1] | 1番目の文字を取得 | “y” |
| text[5] | 5番目(最後)の文字を取得 | “n” |
📤 実行結果:
Py
n
📝 マイナスのインデックス
マイナスのインデックスを使うと、後ろから数えることができます。
📘 マイナスインデックス
| 文字 | P | y | t | h | o | n |
| 前から | 0 | 1 | 2 | 3 | 4 | 5 |
| 後ろから | -6 | -5 | -4 | -3 | -2 | -1 |
# マイナスインデックス
print(text[-1]) # 最後の文字
print(text[-2]) # 後ろから2番目
print(text[-6]) # 後ろから6番目(= 最初)
📤 実行結果:
no
P
💡 マイナスインデックスの使いどころ
text[-1]で「最後の文字」を取得できるのは便利!
文字列の長さを知らなくても、最後の文字にアクセスできます。
✂️ 6. スライス – 文字列の一部を切り出す
🔰 スライスとは?
スライスを使うと、文字列の一部分を切り出すことができます。
「ここからここまで」という範囲を指定します。
📘 スライスの書き方
⚠️ 注意:終了位置の文字は含まれません(終了位置の1つ手前まで)
📝 スライスの基本
# スライスで一部を切り出す
print(text[0:2]) # 0番目から2番目の手前まで
print(text[2:5]) # 2番目から5番目の手前まで
print(text[0:6]) # 全体
🔍 スライスの範囲:
| コード | 範囲 | 結果 |
| text[0:2] | インデックス0〜1(2の手前) | “Py” |
| text[2:5] | インデックス2〜4(5の手前) | “tho” |
| text[0:6] | インデックス0〜5(全体) | “Python” |
📤 実行結果:
Pytho
Python
📝 開始・終了を省略する
📘 省略パターン
| 書き方 | 意味 | 例(”Python”) |
| text[:3] | 最初から3番目の手前まで | “Pyt” |
| text[3:] | 3番目から最後まで | “hon” |
| text[:] | 全体(コピー) | “Python” |
print(text[:3]) # 最初から3番目の手前まで
print(text[3:]) # 3番目から最後まで
print(text[:]) # 全体
📤 実行結果:
Python
Python
💡 実用例:ファイル名から拡張子を取得
# 最後の4文字(拡張子)を取得
extension = filename[-4:]
print(f”拡張子: {extension}”)
📤 実行結果:
拡張子: .pdf🎯 7. f-string(フォーマット文字列)の活用
🔰 f-stringの復習
f-stringは、文字列の中に変数や式を埋め込む便利な機能です。
ステップ4で学びましたが、ここでさらに活用法を学びます。
📘 f-stringの基本
- 文字列の前にfをつける
- 変数は{ }(波括弧)で囲む
- { }の中では計算もできる
📝 f-stringの中で計算
tax_rate = 0.1
# f-stringの中で計算
print(f”税抜: {price}円”)
print(f”消費税: {price * tax_rate}円”)
print(f”税込: {price * (1 + tax_rate)}円”)
📤 実行結果:
税抜: 1000円消費税: 100.0円
税込: 1100.0円
📝 f-stringで関数を呼び出す
# f-stringの中でメソッドを呼び出す
print(f”大文字: {name.upper()}”)
print(f”文字数: {len(name)}文字”)
📤 実行結果:
大文字: PYTHON文字数: 6文字
📝 f-stringで桁揃え・ゼロ埋め
📘 書式指定の方法
| 書き方 | 意味 | 例 | 結果 |
| {x:05} | 5桁でゼロ埋め | x=42 | “00042” |
| {x:.2f} | 小数点以下2桁 | x=3.14159 | “3.14” |
| {x:,} | 3桁ごとにカンマ | x=1000000 | “1,000,000” |
num = 42
print(f”注文番号: {num:05}”)
# 小数点以下2桁
pi = 3.14159
print(f”円周率: {pi:.2f}”)
# 3桁ごとにカンマ
price = 1234567
print(f”価格: {price:,}円”)
📤 実行結果:
注文番号: 00042円周率: 3.14
価格: 1,234,567円
🔧 8. よく使う文字列メソッド
🔰 メソッドとは?
メソッドとは、文字列に対して実行できる「操作」のことです。
文字列.メソッド名()の形で使います。
📘 よく使うメソッド一覧
| メソッド | 説明 | 例 |
| upper() | 大文字に変換 | “hello” → “HELLO” |
| lower() | 小文字に変換 | “HELLO” → “hello” |
| strip() | 前後の空白を削除 | ” hello ” → “hello” |
| replace(A, B) | AをBに置換 | “hello” → “hi” |
| split(区切り) | 区切りで分割 | “a,b,c” → [“a”,”b”,”c”] |
| count(文字) | 文字の出現回数 | “hello”のlは2回 |
📝 大文字・小文字変換
print(text.upper()) # 全て大文字
print(text.lower()) # 全て小文字
print(text.title()) # 単語の先頭を大文字
📤 実行結果:
HELLO WORLDhello world
Hello World
📝 空白を削除 – strip()
print(f”元の文字列: 「{text}」”)
print(f”strip後: 「{text.strip()}」”)
📤 実行結果:
元の文字列: 「 こんにちは 」strip後: 「こんにちは」
📝 文字列を置換 – replace()
# “Python”を”JavaScript”に置換
new_text = text.replace(“Python”, “JavaScript”)
print(new_text)
📤 実行結果:
私はJavaScriptが好きです📝 文字列を分割 – split()
# カンマで分割
fruit_list = fruits.split(“,”)
print(fruit_list)
📤 実行結果:
[‘りんご’, ‘みかん’, ‘バナナ’]💡 結果は「リスト」という形式になります。リストは後のステップで詳しく学びます。
📝 文字の出現回数 – count()
# 特定の文字の出現回数を数える
print(f”‘m’の数: {text.count(‘m’)}”)
print(f”‘g’の数: {text.count(‘g’)}”)
📤 実行結果:
‘m’の数: 2‘g’の数: 2
💡 メソッドは元の文字列を変えない
文字列メソッドは新しい文字列を返すだけで、元の文字列は変更されません。
変更を保存したい場合は、変数に代入し直す必要があります。
text.upper() # これだけでは変わらない
print(text) # → “hello”(元のまま)
text = text.upper() # 代入し直す
print(text) # → “HELLO”
📝 練習問題(10問)
実際に手を動かして、コードを書いてみましょう!
文字列の連結
変数greetingに「Hello」、nameに「Python」を入れて、「Hello, Python!」と表示してください。
name = “Python”
message = greeting + “, “ + name + “!”
print(message)
Hello, Python!
文字列の繰り返し
「🌟」を10回繰り返して表示してください。
print(stars)
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
文字列の長さ
「プログラミング」の文字数を表示してください。
print(len(text))
7
インデックス
「ABCDEFG」から、最初の文字と最後の文字を表示してください。
print(text[0]) # 最初
print(text[-1]) # 最後
A
G
スライス
「Programming」から「Pro」だけを切り出して表示してください。
print(text[:3])
Pro
f-stringの活用
商品名「りんご」、価格150円、個数5個の情報を使って、「りんご 5個 = 750円」と表示してください。(合計金額はf-string内で計算)
price = 150
quantity = 5
print(f”{product} {quantity}個 = {price * quantity}円”)
りんご 5個 = 750円
大文字・小文字変換
「hello world」を大文字に変換して表示してください。
print(text.upper())
HELLO WORLD
文字列の置換
「今日は雨です」の「雨」を「晴れ」に置換して表示してください。
new_text = text.replace(“雨”, “晴れ”)
print(new_text)
今日は晴れです
文字列の分割
「東京-大阪-名古屋-福岡」を「-」で分割して表示してください。
city_list = cities.split(“-“)
print(city_list)
[‘東京’, ‘大阪’, ‘名古屋’, ‘福岡’]
メール形式のチェック
メールアドレス「test@example.com」に「@」が含まれているか確認し、含まれていれば「有効なメール形式です」と表示してください。
ヒント:in演算子を使うと、文字列に特定の文字が含まれるかチェックできます
if “@” in email:
print(“有効なメール形式です”)
有効なメール形式です
💡 "@" in emailは「emailに@が含まれていたらTrue」という意味です。
🎉 ステップ5のまとめ
✅ このステップで学んだこと
- ✅ 連結(+)で文字列を繋げる
- ✅ 繰り返し(*)で文字列を複製する
- ✅ len()で文字列の長さを取得
- ✅ インデックスは0から始まる
- ✅ スライス[開始:終了]で一部を切り出す
- ✅ f-stringで変数を埋め込む・書式指定
- ✅ メソッド(upper, lower, strip, replace, split, count)
💪 次のステップへ
文字列の操作をマスターしました!🎉
次のステップでは、条件分岐(if文)について学びます。「もし〇〇なら△△する」というプログラムの基本的な制御を習得しましょう!
学習メモ
Pythonプログラミング基礎 - Step 5