プログラムの文法などを間違ったまま実行すると、そこでプログラムは停止し、エラーが発生した行数や理由が表示される。
以降の例はそのごく一部だが、初めのうちはエラーメッセージをそのままネット検索するのがいいかもしれない。
エラーの一覧(公式ドキュメント)。
Pythonのプログラミングとしての記述方法が間違っている場合を(ここでは)文法エラーとする。文法エラーはPythonがその「プログラムもどき」を解釈できず、その全体が実行されず(import
など一部除いて)、エラー表示となる。
ここではSyntaxError
とIndentationError
が文法エラー。
文法エラー以外のエラーを例外という。例外は文法としては正しくても実行時の状況によってはエラーの可能性があるもの。実際にエラーでもその直前のコードまでは実行されて、エラー表示して停止する。
例外発生でも停止しないようにするには、例外処理が必要。
#!/usr/bin/env python3
print('こんにちは') # ここも実行されない
print("Hello)
文字列を囲う"
を忘れたとき、
File "./sample.py", line 4 print("Hello) ^ SyntaxError: EOL while scanning string literal
文法エラーなので、直前のコード「こんにちは」も出力されない。
#!/usr/bin/env python3
if True
print("こんにちは")
if
文の末尾の:
(コロン)を忘れたとき、
File "./sample.py"s, line 3 if True ^ SyntaxError: invalid syntax
#!/usr/bin/env python3
if True:
print("こんにちは")
Pythonではインデントが文法のうちなので、
File "./sample.py", line 4 print("こんにちは") ^ IndentationError: expected an indented block
#!/usr/bin/env python3
print("こんにちは")
prin("Hello, world!")
「print」とすべきところを「prin」にしてしまった場合、
こんにちは Traceback (most recent call last): File "./sample.py", line 4, in <module> prin("Hello, world!") NameError: name 'prin' is not defined
例外エラーなので、直前のコードまで実行されている。
#!/usr/bin/env python3
print("今年は" + 2018 + "年")
# ただしくは、
print("今年は" + str(2018) + "年")
Pythonでは文字列と数値は+
で結合できないので、
Traceback (most recent call last): File "./sample.py", line 3, in <module> print("今年は" + 2018 + "年") TypeError: must be str, not int
#!/usr/bin/env python3
入力 = input("整数入力> ")
整数 = int(入力)
print(整数)
整数を入力すべきところを文字入力してしまうと、
整数入力> a Traceback (most recent call last): File "./sample.py", line 4, in <module> 整数 = int(入力) ValueError: invalid literal for int() with base 10: 'a'
#!/usr/bin/env python3
リスト = [1, 2, 3]
print(リスト[3])
# インデックスは0から始まる
リストのインデックスの範囲を超えてしまうと、
Traceback (most recent call last): File "./sample.py", line 4, in <module> print(リスト[3]) IndexError: list index out of range