Python | 三連引用符(トリプルクオーテーション)

Python
スポンサーリンク

練習問題(f文字列 + 三連引用符) — レベル別(解答付き)

まずは 問題だけを解いて、そのあと 解答と短い解説を確認できるようにしました。
時間を測ったり、自力で考えてから答えを見ると効果的です。


基礎(4問)

問題 1
変数 name = "太郎"age = 30 を使い、次の一行メッセージを f文字列で作ってください。
期待出力:太郎さんは30歳です。


問題 2
三連引用符と f文字列を使って、次の複数行メッセージを変数 msg に作り、出力してください(先頭に余分な空行がないように)。

佐藤さんへ
本日のお知らせ:ミーティングは15時からです。
よろしくお願いします。

問題 3
price = 98765.4321 を 3 桁区切りかつ小数点以下 2 桁で出力する f文字列を書いてください。期待出力:98,765.43


問題 4
f文字列内で中かっこ {} をそのまま表示したい場合があります。次の文字列を出力するコードを書いてください:
辞書のキーは { "name": "太郎" } です。

(ヒント:{{}} を使います)


中級(4問)

問題 5
リスト items = [("りんご", 3), ("バナナ", 12), ("みかん", 2)] を使い、三連引用符+ループで以下のような注文メール本文を作るコードを書いてください(先頭の余分な空行は無くす)。期待出力例:

ご注文ありがとうございます。
・りんご x3
・バナナ x12
・みかん x2

問題 6
people = [("山田", 92.456), ("鈴木", 85.2), ("佐々木", 100)] を幅揃えで表にしてください(「名前」は左寄せ幅12、「得点」は幅7で小数第1位)。見出し付きで、期待出力例:

名前          得点
山田          92.5
鈴木          85.2
佐々木       100.0

問題 7
a, b = 7, 3 を使って、次のように小数第3位まで表示する f文字列を作ってください:
7 ÷ 3 = 2.333(丸めは通常の四捨五入で OK)


問題 8
now = datetime(2025, 11, 3, 9, 5) を f文字列で 2025-11-03 09:05 の形式で出力するコードを書いてください(datetime% 書式を使う)。


上級(4問)

問題 9
三連引用符と f文字列を使って、複数行の SQL テンプレートを作ってください(テーブル名とカラムを変数で埋める)。変数例:

table = "users"
columns = "id, name, email"
Python

期待出力:

SELECT id, name, email
FROM users
WHERE active = 1;
SQL

問題 10
次の dict stats = {"a": 12, "b": 3, "c": 45} を受け取り、三連引用符内の f文字列だけで(ループを使わずに)次のように出力する式を書いてください(ヒント:{stats['a']} のように書く)。期待出力:

a: 12
b: 3
c: 45

問題 11
次の条件式を f文字列内に直接書いて、結果を出力してください:
score = 65 のとき "合格" は 70 点以上のみとし、期待出力:結果: 不合格(三項演算子を f文字列内で使う)


問題 12(チャレンジ)
注文テンプレートを作る関数 make_order_email(user, items) を書いてください。

  • user は文字列(名前)。
  • items(name, qty, price) タプルのリスト。
    関数は三連引用符と f文字列で次のような本文を返します(合計金額は桁区切り、税込みは消費税 10% で計算、小数は出さないで整数で表示)。期待出力例:
田中様
ご注文ありがとうございます。

- ノートPC x1 : 120,000円
- マウス x2 : 2,400円

合計(税抜): 122,400円
消費税 (10%): 12,240円
合計(税込): 134,640円

発送までお待ちください。

(※金額は items によって変動)


解答(コード)と簡単な解説

答えを見たくない場合はここで止めてください。自分でやってから照合すると一番学べます。


解答1

name = "太郎"
age = 30
print(f"{name}さんは{age}歳です。")
Python

解答2

name = "佐藤"
msg = f"""\ 
{name}さんへ
本日のお知らせ:ミーティングは15時からです。
よろしくお願いします。
"""
print(msg)
Python

解説f"""\ で先頭の空行を防ぐ。


解答3

price = 98765.4321
print(f"{price:,.2f}")  # 98,765.43
Python

解答4

print(f'辞書のキーは {{ "name": "太郎" }} です。')
Python

解説{{}} が一つの { } に展開される。


解答5

items = [("りんご", 3), ("バナナ", 12), ("みかん", 2)]
body = f"""\ 
ご注文ありがとうございます。
"""
for name, qty in items:
    body += f"・{name} x{qty}\n"
print(body)
Python

解答6

people = [("山田", 92.456), ("鈴木", 85.2), ("佐々木", 100)]
print(f"{'名前':<12}{'得点':>7}")
for name, score in people:
    print(f"{name:<12}{score:7.1f}")
Python

解説<12 は左寄せ幅12、7.1f は幅7で小数1位。


解答7

a, b = 7, 3
print(f"{a} ÷ {b} = {a/b:.3f}")  # 7 ÷ 3 = 2.333
Python

解答8

from datetime import datetime
now = datetime(2025, 11, 3, 9, 5)
print(f"{now:%Y-%m-%d %H:%M}")  # 2025-11-03 09:05
Python

解答9

table = "users"
columns = "id, name, email"
sql = f"""\ 
SELECT {columns}
FROM {table}
WHERE active = 1;
"""
print(sql)
Python

解答10

stats = {"a": 12, "b": 3, "c": 45}
print(f"""a: {stats['a']}
b: {stats['b']}
c: {stats['c']}""")
Python

解説:ループを使わずにキー指定で埋める方法。


解答11

score = 65
print(f"結果: {'合格' if score >= 70 else '不合格'}")
Python

解答12(模範解答)

def make_order_email(user, items):
    # items: list of (name, qty, price) price は税抜き単価(整数)
    lines = ""
    total = 0
    for name, qty, price in items:
        subtotal = qty * price
        total += subtotal
        lines += f"- {name} x{qty} : {subtotal:,}\n"

    tax = int(total * 0.10)  # 消費税 10%、整数へ切り捨て(必要なら round も可)
    total_with_tax = total + tax

    body = f"""\ 
{user}
ご注文ありがとうございます。

{lines}
合計(税抜): {total:,}
消費税 (10%): {tax:,}
合計(税込): {total_with_tax:,}

発送までお待ちください。
"""
    return body

# 使用例
items = [("ノートPC", 1, 120000), ("マウス", 2, 1200)]
print(make_order_email("田中", items))
Python

解説:三連引用符で本文テンプレートを作り、ループで明細を文字列連結、{:,} で桁区切り。


おまけ・学習アドバイス

  • まずは基礎問題を全部自分で解いてみてください。
  • 中級〜上級は実務に近い形なので、関数化やエラーチェック(空リスト対応など)も試してみると実力が伸びます。
  • f を忘れるミスが頻出 → テスト実行して {}がそのまま出るか確認するクセをつけるとよいです。

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