結果画面にエラーが表示されているので、次のポイントを確認しましょう。
①エラー名
②エラーの内容
③エラーの発生箇所
④をクリックすると、Google検索できます。
確認できたら、エラーの種類ごとに対応しましょう。ここでは、代表的な10種類のエラーについて、解決方法を紹介します。
構文が間違っているときに発生するエラーです。
・文字列やコメント以外で全角文字が入っている
・if文・for文・while文などでコロン:がない
・カッコ(),ダブルクォート"...",シングルクォート'...'の閉じ忘れ
・不要なスペースが入っている
・スペースが全角になっている
など
Pythonの構文が間違っていないか確認しましょう。
age = int(input("年齢は?"))
if age < 13
fee = 5000
else:
fee = 8400
print("入園料は" + str(fee) + "円です。")
File "xxxxxxxxxxxx", line 3
if age < 13
^
SyntaxError: invalid syntax
・if文,for文,while文,def文などの行末にコロン(:)がない。
・未完了の箇所がある(カッコの閉じ忘れなど)。
・使用できない文字を使っている。 ・構文中に全角文字を使っている。
・関数などのカッコ閉じるとき全角カッコ「)」になっている。
・変数名が数字からはじまっている。 ・該当がない場合は、前後の書き方で別のエラーの可能性が高い。 ・シングルクォート(')とすべきところがバッククォート(`)になっていて、直後に数字がある。
・if文で正しい比較演算子が使われていない。 ・等しい条件式で使用する比較演算子は「==」。 「=」は代入の演算子。
・全角スペースが入ってしまっている。
・Pythonのコマンドや関数の名前を打ち間違い。 ・カッコを閉じ忘れ。 ・半角スペースとすべきところが、全角スペースになっている。 ・if文,for文,while文,def文などの文末に(:)がない。 ・文字列がシングルクォート(')やダブルクォート(")で囲まれているない。 ・シングルクォート(')とすべきところがバッククォート(`)になっている。 ・SyntaxErrorの他の項目で該当するところはないか確認。
・printのカッコの形が違う(parenthes:カッコ)。
・文字列が半角クォート(')または半角ダブルクォート(")で囲まれていない。 ・全角クォート(’)や全角ダブルクォート(”)で閉じている。
インデントが正しくないときに発生するエラーです。
・if文,for文,while文,def文の次の行頭にインデントがない。
・行頭に不要なスペースやタブが含まれている場合。
・if文,for文,while文,def文の次の行頭に適切にインデントを追加する。
・行頭に不要なスペースがないか確認しましょう。
・正しくないインデントがある。
・if文の次の行頭にインデントがない。
・for文の次の行頭にインデントがない。
・while文の次の行頭にインデントがない。
・def文の次の行頭にインデントがない。
指定した名前の変数が存在しないときに発生するエラーです。
変数名の間違いやスペルミス(大文字・小文字も)
変数名に間違いがないか確認しましょう。
・変数名が途中で途切れていないか(例: ×user_nam → ○user_name)
・iやl,oや0など見間違いやすいアルファベット
・rやlなど間違いやすいアルファベット(例: ×glade → ○grade)
・二重母音の順序(例: ×haedar → ○header)
・アルファベットの大文字・小文字(例: ×User_nam → ○user_name)
・キーボードで隣のキーを入力していないか(例: ×balue → ○value)
・変数xxxが定義されていない。
・定義されていない変数xxxを参照してしまっている。
・変数名にスペルミスがある(大文字・小文字は区別される)。
型に合わない操作をしたときに発生するエラーです。
文字列と数値を組み合わせてprintするときなど
name = "海城中学高等学校"
establish = 1891
school_name = name + establish + "年"
print(school_name)
---------------------------------------------------------------------------
TypeError Traceback
2 establish = 1891
3
----> 4 school_name = name + establish + "年"
5 print(school_name)
TypeError: can only concatenate str (not "int") to str
型に適した指定になるようにします。
name = "海城中学高等学校"
establish = 1891
school_name = name + str(establish) + "年"
print(school_name)
海城中学高等学校1891年
printなどの関数名に値を代入したあと、その関数を呼び出した場合など
例えば、誤ってprint = 5
のように、print
を変数として扱ってしまって、実行してしまう。
print = 5
その後、次のように正しく修正しても、一度変数として扱ってしまっているので、エラーが起こる。
print(5)
Colaboratoryの メニュー > ランタイム > セッションを再起動するをクリックして、セッションを再起動し、再度実行する。
引数に渡した値が正しくないときに発生するエラーです。
int関数やfloat関数など型変換する関数
正しい値を引数に渡す。
・int関数に渡された値が半角数値ではない。
・input関数でユーザーが入力した場合は、入力するときに半角で入力すること。
リスト型やタプル型において、インデックスの指定がリストの範囲を超えているときに発生するエラーです。
要素数が正しいかどうかを確認し、正しいインデックスを指定しましょう。
辞書型において、キーを指定して要素を取得するときに、存在しないキーを指定した時に発生するエラーです。
定義した辞書に含まれるキーが正しいかどうか、指定したキーが存在するか確認しましょう。 なお、キーの一覧を取得するkeys()メソッドを使うと、キーの一覧をリスト型で取得することができます。
読み込んだモジュールが見つからない場合に発生するエラーです。
モジュール名が正しいかどうか確認しましょう。それでも解決しない場合は、モジュールがインストールされているか確認しましょう。
import ...のところで、モジュール名のスペルが正しいか確認しましょう。
ファイルまたはディレクトリが見つからない場合に発生するエラーです。
ファイル・ディレクトリ名が正しいかどうか確認しましょう。
数値演算するときに、0(ゼロ)で割り算したときに発生するエラーです。
0(ゼロ)で割り算しないように処理を確認しましょう。
また、割る数を変数で指定している場合は、変数の代入のときに0(ゼロ)や存在しない値を代入している可能性もあります。
オブジェクトの属性(Attribute)にアクセスできないときに発生するエラーです。属性とは、オブジェクトに存在する変数やメソッドのことです。
オブジェクトに用意されている方法で変数にアクセスします。オブジェクト名、識別子名が正しいかどうか確認しましょう。
モジュールの中の関数が正しく指定されていません。スペルに間違いがないか確認しましょう。
(誤)random.randit ⇒ (正)random.randint