数値だけを扱えるようになったので、今度は「文字」を扱ってみましょう。Pythonでは文字列(テキスト)も変数に入れたり、結合したり、整形したりできます。数値と文字列を組み合わせると、出力がぐっと読みやすくなります。
この記事では、文字列の基本から結合・繰り返し・f文字列まで、ブロックで体験しながら身につけます。

まずはPycoBlocksを開こう
下のPycoBlocksで直接作業するか、別タブで開き、生成されるPythonコードを見ながら進めてください。
文字列とは何か
Pythonでは、テキストを "(ダブルクォート)か '(シングルクォート)で囲んだものを文字列と呼びます。数値の 80 と文字列の "80" は見た目が似ていますが、Pythonの中では別物として扱われます。
| 用語 | 意味 | 例 |
|---|---|---|
| 文字列(string) | "..." や '...' で囲んだテキストデータ |
"Hello" |
| 結合(concatenation) | + で文字列をつなげること |
"A" + "B" → "AB" |
| f文字列(f-string) | f"...{変数}..." の形式で変数を文字列に埋め込む機能 |
f"点数:{score}点" |
ステップ1:文字列を表示しよう
PycoBlocksの「テキスト」カテゴリにあるテキストブロックを「値を表示」にはめると、文字列をそのまま出力できます。

print("Hello, Python!")
print('シングルクォートでもOK')
ステップ2:文字列を結合しよう
文字列どうしは + でつなげることができます。数値の足し算と同じ記号ですが、文字列の場合は「くっつける」動きになります。
first_name = "太郎"
last_name = "山田"
full_name = last_name + " " + first_name
print(full_name)

注意点として、数値(int)を文字列と + でつなごうとするとエラーになります。数値を文字列に変換するには str() を使います。
score = 85
print("得点:" + str(score) + "点")
ステップ3:f文字列で整形しよう
str() を使う方法でも動きますが、f文字列(フォーマット文字列)を使うとよりスッキリ書けます。文字列の先頭に f を付けて、変数を {} で囲むだけです。

name = "山田 太郎"
score = 85
print(f"名前:{name}")
print(f"得点:{score}点")
print(f"{name}さんの得点は{score}点です。")
{} の中には変数だけでなく計算式も書けます。たとえば f"平均:{(80 + 90) / 2}点" のように使うこともできます。
ステップ4:文字列の繰り返し
文字列と整数を * でつなぐと、その文字列を指定した回数だけ繰り返せます。区切り線を簡単に作るときなどに便利です。
print("=" * 20)
print(" 成績レポート")
print("=" * 20)
print("国語:85点")
print("数学:92点")
print("=" * 20)
コーディングモードで書いてみよう
コーディングモードでは、f文字列の {} 内に書式指定もできます。たとえば小数点以下の桁数を揃えたい場合は {値:.2f} のように書きます。
total = 85 + 72 + 90
average = total / 3
print(f"合計:{total}点")
print(f"平均:{average:.1f}点") # 小数第1位まで表示
:.1f は「小数点以下1桁の浮動小数点数(float)として表示」という意味です。:.2f にすれば2桁になります。
スライス・len()・replace()
スライスは文字列の一部を取り出す構文です。text[start:stop] で start 番目から stop の手前までを取り出せます。インデックスは 0 始まりで、マイナスを使うと末尾から数えます。
text = "PycoBlocks"
print(text[:4]) # Pyco(先頭から4文字)
print(text[4:]) # Blocks(4文字目以降)
print(text[::-1]) # skcolBocyP(逆順)
# len():文字列の長さを返す
print(len(text)) # 10
# replace():文字列を置き換える
msg = "Pythonは楽しい"
print(msg.replace("Python", "PycoBlocks")) # PycoBlocksは楽しい
演習課題
課題4-1:自己紹介文を作ろう
変数 name(自分の名前)・age(年齢)・hobby(趣味)を作り、f文字列を使って「○○です。○歳です。趣味は○○です。」と3行で表示してください。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

name = "山田 太郎"
age = 16
hobby = "ロボット製作"
print(f"{name}です。")
print(f"{age}歳です。")
print(f"趣味は{hobby}です。")
解説: f文字列を使えば str(age) の変換なしに数値をそのまま埋め込めます。
課題4-2:成績表を整形しよう
3教科の点数(国語・数学・英語)を変数に入れ、合計・平均を計算して、区切り線付きの成績表形式で表示してください。平均は小数第1位まで表示しましょう。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

kokugo = 85
math = 92
english = 78
total = kokugo + math + english
average = total / 3
print(f"国語:{kokugo}点")
print(f"数学:{math}点")
print(f"英語:{english}点")
print(f"合計:{total}点")
print(f"平均:{average}点")
解説: "=" * 20 で区切り線を作ると、幅を変えたいときに数値を1か所変えるだけで済みます。
課題4-3:名札ジェネレーターを作ろう
名前・学年・クラスを変数に入れ、下のような枠付き名札を表示するプログラムを作ってください。枠の幅は名前の文字数に合わせて自動調整できると上級です(len() を使います)。
(実際の枠はプログラムで表示されます)
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

name = "山田 太郎"
grade = "2年"
cls = "Aクラス"
width = max(len(name), len(grade + " " + cls)) + 4
line = "─" * width
print(f"┌{line}┐")
print(f"│ {name}{' ' * (width - len(name) - 2)}│")
print(f"│ {grade} {cls}{' ' * (width - len(grade) - len(cls) - 3)}│")
print(f"└{line}┘")
解説: len() は文字列の長さを返す関数です。幅を計算してスペースを調整することで、名前の長さが変わっても枠が崩れません。
課題4-4:文字列を逆順にしよう
スライス [::-1] を使って文字列を逆順にしてください。たとえば word = "Python" を逆順にすると "nohtyP" になります。
次に text = "level" で試して、前から読んでも後ろから読んでも同じ(回文)かどうかを == で確認してみましょう。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

word = "Python"
print(word[::-1]) # → nohtyP
text = "level"
print(text == text[::-1]) # → True(回文)
解説: [::-1] は「末尾から先頭に向かって1文字ずつ」という意味のスライスです。text == text[::-1] が True なら回文です。スライスは文字列・リストに共通して使えるPythonの強力な機能です。なお、ブロック図にはスライスを直接表現するブロックがないため、結果の値("nohtyP" や True)を直接 print する形で示しています。実際のスライス処理は上のPythonコードで確認してください。
課題4-5:郵便番号を「123-4567」形式に変換しよう
7桁の郵便番号文字列 zipcode = "1234567" を受け取り、"123-4567" の形式に変換して表示してください。スライスを2回使います。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

zipcode = "1234567"
formatted = zipcode[:3] + "-" + zipcode[3:]
print(formatted) # → 123-4567
解説: zipcode[:3] は先頭3文字(インデックス0〜2)、zipcode[3:] は4文字目以降をすべて取り出します。文字列の + は連結なので、間に "-" を挟むだけで変換できます。なお、ブロック図にはスライスを直接表現するブロックがないため、変換後の値("123-4567")を直接 formatted に代入する形で示しています。実際のスライス処理は上のPythonコードで確認してください。
課題4-6:文章から単語を置き換えよう
text = "Pythonはむずかしい。Pythonがきらいだ。" という文章の中の Python を PycoBlocks に、むずかしい を たのしい に、きらい を すき に置き換えて表示してください。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

text = "Pythonはむずかしい。Pythonがきらいだ。"
text = text.replace("Python", "PycoBlocks")
text = text.replace("むずかしい", "たのしい")
text = text.replace("きらい", "すき")
print(text)
解説: str.replace(old, new) は文字列中のすべての old を new に置き換えます。text = text.replace(...) のように変数に代入し直すことで、連続して複数箇所を変換できます。テキスト処理の基本パターンです。
まとめ
- 文字列は
"か'で囲んで作ります +で文字列をつなげ、*で繰り返せます- 数値を文字列と混ぜるには
str()または f文字列(f"...{変数}...")を使います - f文字列の
{値:.1f}で小数点の桁数を指定できます
次は input() を使ってキーボードから文字を入力し、対話的なプログラムを作ります。→ Python × 入門 | #05 キーボードから入力しよう