Python入門:基礎文法編のよくある間違い

レッスンの本文で注意している点を、つまずきの側から45件ぶん並べ直しました。書いた覚えのある形が見つかったら、 そのままレッスンに戻って前後を読めます。

printで表示

レッスンを読む

return を書き忘れる

print("=== おこづかい帳 ===") とだけ書くと、画面には出ますが関数の戻り値は None になり、テストは失敗します。必ず return で返します。

printで表示で詳しく読む

クオートの閉じ忘れ

return "=== おこづかい帳 == のように閉じるクオートがないと SyntaxError になります。開いたら必ず閉じます。

printで表示で詳しく読む

全角の記号を使ってしまう

print() のように全角のかっこを書くとエラーになります。記号はすべて半角で書きます。日本語を打つ設定のまま記号を入力すると起こりがちです。

printで表示で詳しく読む

文字列の連結

レッスンを読む

空白を入れ忘れる

name + price_text と書くと りんご120 とくっつきます。+ " " + を挟むのを忘れないでください。半角スペースと全角スペースは別の文字なので、必ず半角にします。

文字列の連結で詳しく読む

引数を文字列のクオートで囲んでしまう

return "name" + " " + "price_text" と書くと、引数の中身ではなく name price_text という文字がそのまま返ります。引数を使うときはクオートで囲みません。

文字列の連結で詳しく読む

円 を付け忘れる

最後の + "円" が抜けると りんご 120 になります。テストは 1 文字違うだけで落ちるので、末尾まで見直します。

文字列の連結で詳しく読む

結果をクオートで囲んでしまう

return "budget - price1 - price2" と書くと、計算されずにその文字がそのまま返ります。計算式はクオートで囲みません。

四則演算で詳しく読む

掛け算に x を使う

budget x 2 は Python では文法エラーです。掛け算はアスタリスク * と決まっています。

四則演算で詳しく読む

引く順番をかっこで間違える

budget - (price1 - price2) と書くと 3000 - 40 で 2960 になってしまいます。今回はかっこは不要です。

四則演算で詳しく読む

末尾に余分な \n を付ける

+ "\n" で締めくくると、目に見えない差でテストが失敗します。改行は行と行の 間 にだけ入れます。

実行順序で詳しく読む

\n を全角で書く

¥n や全角の n では改行になりません。半角のバックスラッシュと半角の n を使います。日本語キーボードでは ¥ キーで入力できます。

実行順序で詳しく読む

関数を定義する前に呼ぶ

def より上で呼び出すと NameError になります。定義が先、呼び出しがあと、という順番を守ります。

実行順序で詳しく読む

全角の # を使う

見た目は似ていますが、Python はコメントとして扱いません。SyntaxError になります。記号は半角で入力します。

コメントで詳しく読む

文字列の中の # をコメントだと思う

print("#1 りんご") の # はただの文字で、コメントにはなりません。クオートの中は文字列として扱われます。

コメントで詳しく読む

コメントで処理を止めたつもりが式が壊れる

return price1 + # price2 のように式の途中で # を書くと、右辺が消えて SyntaxError になります。コメントアウトは行ごとに行います。

コメントで詳しく読む

エラーを読んでみる

レッスンを読む

エラーの一番上だけ読む

上のほうは Python の内部の呼び出し履歴で、原因は いちばん下 に書いてあります。下から読むのが鉄則です。

エラーを読んでみるで詳しく読む

エラーを消すために処理を消す

動かない行をまるごと削ればエラーは消えますが、必要な処理まで消えます。直すのであって、消すのではありません。

エラーを読んでみるで詳しく読む

つくる:レシート表示

レッスンを読む

末尾に \n を付けてしまう

"合計 200円" のうしろに改行を足すと、見た目には分からない差でテストが落ちます。改行は行と行の間だけです。

つくる:レシート表示で詳しく読む

左右を逆に書く

"りんご" = name はエラーになります。入れる先の名前は必ず左です。

変数で詳しく読む

入れる前に使う

print(label) を label = ... より前に書くと NameError になります。まだその名前を知らないからです。エラーメッセージが名前をそのまま教えてくれます。

変数で詳しく読む

名前を打ち間違える

price_text を price_txt と書くと、別の変数を新しく作ったことになります。エラーが出ずに結果だけ狂うこともあるので、名前は正確に写します。

変数で詳しく読む

typeで型を調べる

レッスンを読む

type の結果をそのまま比べようとする

type(120) は "int" という文字列ではありません。文字列がほしいときは必ず .__name__ を付けます。

typeで型を調べるで詳しく読む

type を変数名に使ってしまう

type = "食費" と書くと、以降 type が命令として使えなくなります。組み込みの名前は変数名に使いません。

typeで型を調べるで詳しく読む

数値への変換

レッスンを読む

int の結果を受け取らない

int(price_text) と書くだけでは何も起きません。price = int(price_text) のように変数に入れるか、そのまま return する必要があります。

数値への変換で詳しく読む

変換したつもりで文字列を足す

int(price_text) + "80" は TypeError です。片方だけ変換しても、もう片方が文字列なら混ぜられません。

数値への変換で詳しく読む

文字列への変換

レッスンを読む

str を付け忘れる

name + " " + price + "円" は TypeError です。エラーメッセージは can only concatenate str と出ます。「文字列にしか足せない」という意味なので、数値のほうを str で包みます。

文字列への変換で詳しく読む

全体を str で包んでしまう

str(name + " " + price + "円") と書いても直りません。かっこの中で先に連結が起きて、そこで落ちるからです。包むのは price だけです。

文字列への変換で詳しく読む

str と int を取り違える

名前が短いので逆に書きがちです。str は文字列にする、int は整数にする、と結果の型で覚えます。

文字列への変換で詳しく読む

None を 0 や空文字と同じに扱う

型が違うので、type の結果も str にしたときの見た目も変わります。未入力を表したいときだけ None を使います。

boolとNoneで詳しく読む

先頭の f を忘れる

"{name} {price}円" は波かっこごと文字として残ります。実行してもエラーが出ないので気づきにくく、表示を見て初めて分かります。

f-stringで詳しく読む

波かっこの中をクオートで囲む

f"{'name'} {price}円" と書くと、変数ではなく name という文字がそのまま入ります。かっこの中の変数名にクオートは付けません。

f-stringで詳しく読む

かっこの外に空白を入れ忘れる

f"{name}{price}円" は りんご120円 になります。空白が必要なら {} と {} の間に自分で書きます。

f-stringで詳しく読む

入力を受け取る

レッスンを読む

split の結果を 1 つの変数で受ける

name = text.split(" ") と書くと、切り分けた 2 つがまとめて name に入ります。左に 2 つ名前を並べます。

入力を受け取るで詳しく読む

区切りが全角スペースになっている

split(" ") は半角スペースで切ります。全角スペースで打たれた文字列は切れません。

入力を受け取るで詳しく読む

つくる:入力できるおこづかい帳

レッスンを読む