この記事で学べる知識:エラーメッセージ
この記事の練習問題で使用する知識:
入力と出力の基本、コメントの書き方、変数の宣言と代入、基本データ型と算術演算子、文字列の操作、フォーマット文字列、比較演算子と論理演算子、条件分岐(if-else文)、条件分岐(elif文)、条件分岐(match文)、繰り返し処理(for文)、繰り返し処理(while文)、繰り返しの制御、エラーメッセージ、例外処理の基礎
<<前の問題 | 問題集Top |
次の問題>> |
Pythonの「エラーメッセージ」とは
この章ではPythonにおける「エラーメッセージ」の意味や読み方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。
プログラミングを始めたばかりの頃、エラーメッセージに戸惑うことが多いかもしれません。
しかしエラーメッセージはバグを修正するためのヒントを提供してくれる重要な情報です。
この記事ではPythonでよく見られるエラーメッセージをいくつか紹介し、その読み方を解説します。
SyntaxError (構文エラー)
SyntaxError はPythonの構文に誤りがある場合に発生します。例えば、下のコードを見てみましょう。
print("Hello World
上記のコードを実行すると次のエラーが出ます。
SyntaxError: EOL while scanning string literal
エラーメッセージは文字列の終わりを示す引用符 "
が閉じていないことを教えてくれています。
この場合、引用符を正しく閉じれば問題は解決します。
NameError (名前エラー)
NameError は、宣言されていない変数や関数を使おうとしたときに発生します。これは、スペルミスや変数が定義されていない場合によく起こります。
aisatsu = "hellow" print(oisatsu)
このコードは次のようなエラーを返します。
NameError: name 'oisatsu' is not defined
このメッセージは、「oisatsu」という名前の変数が定義されていないことを示しています。
変数が正しく宣言されているか、スペルミスがないか確認しましょう。
TypeError (型エラー)
TypeError は、異なる型同士を不正に操作した場合に発生します。例えば、文字列と整数を直接足そうとすると、このエラーが発生します。
age = 20 message = "I am " + age + " years old"
実行すると、次のエラーが発生します。
TypeError: can only concatenate str (not "int") to str
このエラーメッセージは文字列と整数は直接結合できないことを示しています。
このエラーを修正するには整数を文字列に変換してから結合する必要があります。
age = 20 message = "I am " + str(age) + " years old"
IndexError (インデックスエラー)
IndexError は、リストやタプルの範囲外のインデックスにアクセスしようとしたときに発生します。
my_list = [1, 2, 3] print(my_list[ 3])
実行すると、次のエラーが発生します。
IndexError: list index out of range
リストのインデックスは 0 から始まりますが、リストには3つの要素しかないため、インデックス3は範囲外です。
修正するには有効なインデックスを使用するか、リストの長さを確認しましょう。
ValueError (値エラー)
ValueError は、関数や操作が正しい型であるものの、不適切な値が渡された場合に発生します。
number = int("hello")
このコードを実行すると次のエラーが出ます。
ValueError: invalid literal for int() with base 10: 'hello'
このメッセージは「hello」という文字列を整数に変換しようとしたためにエラーが発生していることを教えてくれます。
まとめ
エラーメッセージはプログラミングを進める上で非常に重要な道具です。
どのエラーメッセージもバグ修正のヒントを提供してくれるので、メッセージの内容をよく読み、少しずつ理解を深めていきましょう。
エラーを恐れる必要はありません。エラーメッセージを読めるようになることで、プログラミングのスキルも向上していくことでしょう。
Python練習問題2-8:エラーメッセージをよんでエラーを修正しよう
以下のコードをコピーして実行してみましょう。
そうすると複数のエラーが発生しますので、表示されるエラーメッセージを参考にしてエラー箇所を特定し、正しいコードを書きましょう。
print("Hello World print(helloworld) age = 20 message = "I am " + age + " years old" print(message) # まだリストを勉強していない人は、以下の2行は無視してください。 my_list = [1, 2, 3] print(my_list[ 3]) number = int("hello") print(number)
解答例と解説
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
# 1. SyntaxError - クォーテーションを閉じる print("Hello World") # 2. NameError - 変数を定義 helloworld = "Hello World" print(helloworld) # 3. TypeError - 整数を文字列に変換して結合 age = 20 message = "I am " + str(age) + " years old" print(message) # 4. IndexError - 有効なインデックスを使用 my_list = [1, 2, 3] print(my_list[ 2]) # インデックスは0から始まるので、最大は2 # 5. ValueError - 整数として解釈可能な文字列を使用 number = int("10") print(number)
正解コードの解説
非常にシンプルなコードのため解説はありません。
難しいと感じる方は上記の用語の説明を見返してみてください。
<<前の問題 |
問題集Top |
次の問題>> |
この記事への質問・コメント
この記事を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。