Code Fix

中級

f忘れでf文字列が展開されない

f文字列のfを書き忘れると、波括弧の中身は変数として展開されず、そのままの文字として表示されます。

なぜエラーが出ないのか

出力: {name}
(エラーなし)
Pythonは何も報告しません。文法として正しいためです
出力: {name}
実際の挙動 — 期待した結果と食い違っている箇所
見つけ方
エラーが出ないので、出力を目で確かめるしかありません。この種の誤りが最も発見が遅れます

このエラーが出る典型パターン

パターン1

 1  name = "Tom"
 2  msg =       "{name}"
             ^
 3  print(msg)
出力: {name}期待: Tom (エラーにはなりません)

f忘れると、波括弧はただの文字として扱われ、変数の値に置き換わりません。

直し方: (空)f にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  age = 20
 2  print(    "Age: {age}")
            ^
出力: Age: {age}期待: Age: 20 (エラーにはなりません)

print()の引数でも同じです。f忘れは構文エラーにならないため、実行するまで気づきにくいミスです。

直し方: (空)f にします。

この問題を解いてみる →

パターン3

 1  x = 5
 2  y = 10
 3  print(      "{x} + {y} = {x+y}")
             ^
出力: {x} + {y} = {x+y}期待: 5 + 10 = 15 (エラーにはなりません)

式を埋め込む{x+y}のような書き方も、f文字列でなければ計算されずそのまま表示されます。

直し方: (空)f にします。

この問題を解いてみる →

よくある誤解

波括弧の書き方自体は合っているため、構文エラーにはなりません。実行して出力を見るまで、展開されていないことに気づきにくいミスです。

まとめ

f忘れでf文字列が展開されないは中級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)