ステップ5:文字列の操作

📝 ステップ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 “山田”と”太郎”を繋げる “山田太郎”

📤 実行結果:

山田太郎

📝 スペースを入れて連結

姓と名の間にスペースを入れたい場合は、スペース文字列" "を挟みます。

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}歳です” 自動で変換してくれる
age = 25

# 方法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(文字列や変数)

🔍 コードの意味:

部分 意味
len 長さを調べる命令(関数)
( ) 調べたいものを入れる場所

📝 文字数を数えてみよう

# 文字列の長さを調べる
text1 = “Python”
text2 = “こんにちは”
text3 = “Hello, World!”

print(len(text1))
print(len(text2))
print(len(text3))

📤 実行結果:

6
5
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と組み合わせて使う

# f-stringの中でlen()を使う
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

📝 インデックスで文字を取り出す

text = “Python”

# インデックスで文字を取り出す
print(text[0]) # 0番目の文字
print(text[1]) # 1番目の文字
print(text[5]) # 5番目の文字

🔍 コードの意味:

コード 意味 結果
text[0] 0番目(最初)の文字を取得 “P”
text[1] 1番目の文字を取得 “y”
text[5] 5番目(最後)の文字を取得 “n”

📤 実行結果:

P
y
n

📝 マイナスのインデックス

マイナスのインデックスを使うと、後ろから数えることができます。

📘 マイナスインデックス

文字 P y t h o n
前から 0 1 2 3 4 5
後ろから -6 -5 -4 -3 -2 -1
text = “Python”

# マイナスインデックス
print(text[-1]) # 最後の文字
print(text[-2]) # 後ろから2番目
print(text[-6]) # 後ろから6番目(= 最初)

📤 実行結果:

n
o
P

💡 マイナスインデックスの使いどころ

text[-1]で「最後の文字」を取得できるのは便利!
文字列の長さを知らなくても、最後の文字にアクセスできます。

✂️ 6. スライス – 文字列の一部を切り出す

🔰 スライスとは?

スライスを使うと、文字列の一部分を切り出すことができます。
「ここからここまで」という範囲を指定します。

📘 スライスの書き方

文字列[開始:終了]

⚠️ 注意:終了位置の文字は含まれません(終了位置の1つ手前まで)

📝 スライスの基本

text = “Python”

# スライスで一部を切り出す
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”

📤 実行結果:

Py
tho
Python

📝 開始・終了を省略する

📘 省略パターン

書き方 意味 例(”Python”)
text[:3] 最初から3番目の手前まで “Pyt”
text[3:] 3番目から最後まで “hon”
text[:] 全体(コピー) “Python”
text = “Python”

print(text[:3]) # 最初から3番目の手前まで
print(text[3:]) # 3番目から最後まで
print(text[:]) # 全体

📤 実行結果:

Pyt
hon
Python

💡 実用例:ファイル名から拡張子を取得

filename = “report.pdf”

# 最後の4文字(拡張子)を取得
extension = filename[-4:]
print(f”拡張子: {extension}”)

📤 実行結果:

拡張子: .pdf

🎯 7. f-string(フォーマット文字列)の活用

🔰 f-stringの復習

f-stringは、文字列の中に変数や式を埋め込む便利な機能です。
ステップ4で学びましたが、ここでさらに活用法を学びます。

📘 f-stringの基本

f”文字列の中に{変数}を埋め込む”
  • 文字列の前にfをつける
  • 変数は{ }(波括弧)で囲む
  • { }の中では計算もできる

📝 f-stringの中で計算

price = 1000
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で関数を呼び出す

name = “python”

# 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”
# ゼロ埋め(5桁)
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回

📝 大文字・小文字変換

text = “Hello World”

print(text.upper()) # 全て大文字
print(text.lower()) # 全て小文字
print(text.title()) # 単語の先頭を大文字

📤 実行結果:

HELLO WORLD
hello world
Hello World

📝 空白を削除 – strip()

text = ” こんにちは “

print(f”元の文字列: 「{text}」”)
print(f”strip後: 「{text.strip()}」”)

📤 実行結果:

元の文字列: 「 こんにちは 」
strip後: 「こんにちは」

📝 文字列を置換 – replace()

text = “私はPythonが好きです”

# “Python”を”JavaScript”に置換
new_text = text.replace(“Python”, “JavaScript”)
print(new_text)

📤 実行結果:

私はJavaScriptが好きです

📝 文字列を分割 – split()

fruits = “りんご,みかん,バナナ”

# カンマで分割
fruit_list = fruits.split(“,”)
print(fruit_list)

📤 実行結果:

[‘りんご’, ‘みかん’, ‘バナナ’]
💡 結果は「リスト」という形式になります。リストは後のステップで詳しく学びます。

📝 文字の出現回数 – count()

text = “programming”

# 特定の文字の出現回数を数える
print(f”‘m’の数: {text.count(‘m’)}”)
print(f”‘g’の数: {text.count(‘g’)}”)

📤 実行結果:

‘m’の数: 2
‘g’の数: 2

💡 メソッドは元の文字列を変えない

文字列メソッドは新しい文字列を返すだけで、元の文字列は変更されません。
変更を保存したい場合は、変数に代入し直す必要があります。

text = “hello”
text.upper() # これだけでは変わらない
print(text) # → “hello”(元のまま)

text = text.upper() # 代入し直す
print(text) # → “HELLO”

📝 練習問題(10問)

実際に手を動かして、コードを書いてみましょう!

問題1 初級

文字列の連結

変数greetingに「Hello」、nameに「Python」を入れて、「Hello, Python!」と表示してください。

greeting = “Hello”
name = “Python”

message = greeting + “, “ + name + “!”
print(message)
📤 実行結果:
Hello, Python!
問題2 初級

文字列の繰り返し

「🌟」を10回繰り返して表示してください。

stars = “🌟” * 10
print(stars)
📤 実行結果:
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
問題3 初級

文字列の長さ

「プログラミング」の文字数を表示してください。

text = “プログラミング”
print(len(text))
📤 実行結果:
7
問題4 初級

インデックス

「ABCDEFG」から、最初の文字と最後の文字を表示してください。

text = “ABCDEFG”

print(text[0]) # 最初
print(text[-1]) # 最後
📤 実行結果:
A
G
問題5 初級

スライス

「Programming」から「Pro」だけを切り出して表示してください。

text = “Programming”
print(text[:3])
📤 実行結果:
Pro
問題6 中級

f-stringの活用

商品名「りんご」、価格150円、個数5個の情報を使って、「りんご 5個 = 750円」と表示してください。(合計金額はf-string内で計算)

product = “りんご”
price = 150
quantity = 5

print(f”{product} {quantity}個 = {price * quantity}円”)
📤 実行結果:
りんご 5個 = 750円
問題7 中級

大文字・小文字変換

「hello world」を大文字に変換して表示してください。

text = “hello world”
print(text.upper())
📤 実行結果:
HELLO WORLD
問題8 中級

文字列の置換

「今日は雨です」の「雨」を「晴れ」に置換して表示してください。

text = “今日は雨です”
new_text = text.replace(“雨”, “晴れ”)
print(new_text)
📤 実行結果:
今日は晴れです
問題9 中級

文字列の分割

「東京-大阪-名古屋-福岡」を「-」で分割して表示してください。

cities = “東京-大阪-名古屋-福岡”
city_list = cities.split(“-“)
print(city_list)
📤 実行結果:
[‘東京’, ‘大阪’, ‘名古屋’, ‘福岡’]
問題10 中級

メール形式のチェック

メールアドレス「test@example.com」に「@」が含まれているか確認し、含まれていれば「有効なメール形式です」と表示してください。
ヒント:in演算子を使うと、文字列に特定の文字が含まれるかチェックできます

email = “test@example.com”

if “@” in email:
    print(“有効なメール形式です”)
📤 実行結果:
有効なメール形式です

💡 "@" in emailは「emailに@が含まれていたらTrue」という意味です。

🎉 ステップ5のまとめ

✅ このステップで学んだこと

  • 連結(+)で文字列を繋げる
  • 繰り返し(*)で文字列を複製する
  • len()で文字列の長さを取得
  • インデックスは0から始まる
  • スライス[開始:終了]で一部を切り出す
  • f-stringで変数を埋め込む・書式指定
  • メソッド(upper, lower, strip, replace, split, count)

💪 次のステップへ

文字列の操作をマスターしました!🎉

次のステップでは、条件分岐(if文)について学びます。「もし〇〇なら△△する」というプログラムの基本的な制御を習得しましょう!

📝

学習メモ

Pythonプログラミング基礎 - Step 5

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE