AttributeError

  [[docs.python.org]]
AttributeError の「Attribute」とは、「プロパティ」と「メソッド」を総称した言葉です。
日本語では「属性」です。

このエラーは、属性参照 (属性参照 を参照) や代入が失敗した場合に送出されます。

AttributeError: 'tuple' object has no attribute 'append'

サンプルコード:

month_tuple = "jul", "aug", "sep",
month_tuple.append("oct", )

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "D:\sample_codes\python_basic_sec1\part2_sequences\basic2_06_tuple.py", line 47, in 
    month_tuple.append("oct", )  
AttributeError: 'tuple' object has no attribute 'append'

解説:

'tuple' has no attribute 'append' を訳すと、「タプルは、append属性を持っていない」というところです。

オブジェクトごとに、有する「プロパティ」や「メソッド」は異なります。
tuple は append メソッドを有していません。
ありもしないメソッドを呼び出そうとしたのでこのエラーが出ました。

KeyError

  [[docs.python.org]]
マッピング (辞書) のキーが、既存のキーの集合内に見つからなかった場合に送出されます。

KeyError: 'b'

サンプルコード:

my_dict={'a':1}
result = my_dict['b']

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "C:\Program Files\Python310\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "", line 2, in 
KeyError: 'b'

解説:

辞書に該当するキーが存在しないために出ているエラーです。

IndentationError

  [[docs.python.org]]
正しくないインデントに関する構文エラーの基底クラスです。これは SyntaxError のサブクラスです。

Pythonでは、インデントを整えることがとても重要です。
インデントが揃っていないと構文エラーになります。

IndentationError: unexpected indent

サンプルコード:

hoge = "aaa"
  fuga = "bbb"

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "C:\Program Files\Python310\lib\code.py", line 63, in runsource
    code = self.compile(source, filename, symbol)
  File "C:\Program Files\Python310\lib\codeop.py", line 153, in __call__
    return _maybe_compile(self.compiler, source, filename, symbol)
  File "C:\Program Files\Python310\lib\codeop.py", line 70, in _maybe_compile
    compiler(source + "\n", filename, symbol)
  File "C:\Program Files\Python310\lib\codeop.py", line 118, in __call__
    codeob = compile(source, filename, symbol, self.flags, True)
  File "", line 2
    fuga = "bbb"

解説:

この例では、2行目の fuga = "bbb" の手前によけいなインデントがあるためにエラーが生じています。

TypeError

  [[docs.python.org]]
関数やメソッドに渡した引数の型が不適切なときに出るエラーです。

組み込み演算または関数が適切でない型のオブジェクトに対して適用された際に送出されます。
関連値は型の不整合に関して詳細を述べた文字列です。

この例外は、そのオブジェクトで実行しようとした操作がサポートされておらず、その予定もない場合にユーザーコードから送出されるかもしれません。

TypeError: can only concatenate str (not "int") to str

サンプルコード:

city = "横浜市"
print(city + 3)

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "D:\sample_codes\python_basic_sec1\part1_literals\basic14_str_arithmetic.py", line 19, in 
    print(city + 3)
TypeError: can only concatenate str (not "int") to str

解説:

この例では、文字列と整数を結合しようとしてエラーメッセージが出ている。
エラーメッセージをそのまま日本語になおすと、「str と結合できるのは str だけだ。intではない」といったところ。
"concatenate" は「結合する」という意味。

TypeError: can only concatenate tuple (not "int") to tuple

サンプルコード:

y = 5,
z = y + 7
print(z)

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "D:\projects\python_basic_sec1\part2_sequences\basic2_11_unpack_errors.py", line 22, in 
    z = y + 7
TypeError: can only concatenate tuple (not "int") to tuple

解説:

1行目で、コードの右辺最後にカンマ「 , 」があります。
ですので、 y = 5 の右辺はタプルです。

そのため、本来は数値を格納したかった変数 y に、要素数 1 のタプルが格納されてしまっています。

つまり、y + 7 は タプルと数値の7を加算演算子「 + 」で結合していることになります。
しかし、タプルはタプルとしか「 + 」での演算をできません。

以上のような経緯でこのエラーが生じています。

「変数への代入文の末尾にうっかりカンマ『 , 』を入れてしまう」というのはよくあるミスなのですが、特に初心者のうちは気づきにくいです。
日頃から、エラーメッセージを読むこと、デバッグ時には type 関数等を使ってデータの型を調べ、変数に期待どおりの値が格納されているかどうか確認するようにしましょう。

TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

サンプルコード:

y = 5,
z = 7 + y
print(z)

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "D:\projects\python_basic_sec1\part2_sequences\basic2_11_unpack_errors.py", line 22, in 
    z = 7 + y
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

解説:

1行目で、コードの右辺最後にカンマ「 , 」があります。
ですので、 y = 5 の右辺はタプルです。

そのため、本来は整数を格納したかった変数 y に、要素数 1 のタプルが格納されてしまっています。

つまり、7 + y は整数の7とタプルとを加算演算子「 + 」で結合していることになります。
しかし、「 + 」での演算を使った整数とタプルとの演算はサポートされていません。

以上のような経緯でこのエラーが生じています。

「変数への代入文の末尾にうっかりカンマ『 , 』を入れてしまう」というのはよくあるミスなのですが、特に初心者のうちは気づきにくいです。
日頃から、エラーメッセージを読むこと、デバッグ時には type 関数等を使ってデータの型を調べ、変数に期待どおりの値が格納されているかどうか確認するようにしましょう。

TypeError: cannot unpack non-iterable int object

サンプルコード:

x, = 5

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "D:\projects\python_basic_sec1\part2_sequences\basic2_11_unpack_errors.py", line 27, in 
    x, = 5
TypeError: cannot unpack non-iterable int object

解説:

1行目で、コードの左辺最後にカンマ「 , 」があります。
ですので、 x, = 5 の左辺は、タプル等のイテラブルを受け取る必要があります。

ところが、右辺にあるのは、整数の 5 です。
これは、イテラブルではありません。

以上の理由からこのエラーが生じています。

「変数への代入文の末尾にうっかりカンマ『 , 』を入れてしまう」というのはよくあるミスなのですが、特に初心者のうちは気づきにくいです。
日頃から、エラーメッセージを読むこと、デバッグ時には type 関数等を使ってデータの型を調べ、変数に期待どおりの値が格納されているかどうか確認するようにしましょう。

TypeError: 'module' object is not callable

サンプルコード:

import datetime
my_datetime = datetime(2022, 7, 22, 8, 27)

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "C:\Program Files\Python310\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "", line 2, in 
TypeError: 'module' object is not callable

解説:

datetime型を呼び出して日付時刻を生成しようというときに初心者がやりがちな間違いを紹介します。

"object is not callable" とは、指定されたオブジェクトは「呼び出し可能オブジェクト」ではないという意味です。
「呼び出し可能オブジェクト」であるとは、オブジェクトの末尾に(カッコ)をつけた構文で「呼び出す」ことが可能なオブジェクトだという意味です。

ここでは、 datetime モジュールを datetime(2022, 7, 22, 8, 27) と(カッコを)つけて呼び出そうとしたためにエラーが生じました。

1行目で import したのは datetime モジュールです。
datetime モジール内の datetime 型 (datetime.datetime) ではありません。

ですので、以下では、 datetime モジュールに対して datetime(2022, 7, 22, 8, 27) という形で呼び出しをしようとしています。
モジュールは(カッコ)をつけた構文で「呼び出す」ことができないので、エラーになりました。


正しくは、 datetime モジュールではなく、 datetime 内で定義されている datetime 型を呼び出すべきでした。
具体的には、以下のいずれかの書き方をするべきでした。
# datetimeモジュールではなく、 datetime.datetime 型をインポートする
import datetime.datetime
my_datetime = datetime(2022, 7, 22, 8, 27)

# 呼び出しの構文で、datetimeモジュールではなく、 datetime.datetime を指定する
import datetime
my_datetime = datetime.datetime(2022, 7, 22, 8, 27)

ValueError

  [[docs.python.org]]
演算子や関数が、正しい型だが適切でない値を持つ引数を受け取ったときや、 IndexError のようなより詳細な例外では記述できない状況で送出されます。

ValueError: too many values to unpack (expected 3)

サンプルコード:

a, b, c = 3, 5, 7, 9

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "D:\projects\python_basic_sec1\part2_sequences\basic2_11_unpack_errors.py", line 16, in 
    a, b, c = 3, 5, 7, 9
ValueError: too many values to unpack (expected 3)

解説:

アンパックのときに、引数の数が左辺と右辺で一致しないときに生じるエラーです。
この例では、左辺に比べて右辺のほうが引数が多いです。

ValueError: not enough values to unpack (expected 4, got 3)

サンプルコード:

a, b, c, d = 3, 5, 7

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "D:\projects\python_basic_sec1\part2_sequences\basic2_11_unpack_errors.py", line 17, in 
    a, b, c, d = 3, 5, 7
ValueError: not enough values to unpack (expected 4, got 3)

解説:

アンパックのときに、引数の数が左辺と右辺で一致しないときに生じるエラーです。
この例では、左辺に比べて右辺のほうが引数が少ないです。

zoneinfo.ZoneInfoNotFoundError

  [[docs.python.org]]
ZoneInfoオブジェクトの構築に失敗したときに発生するエラーです。
具体的に言うと、指定された timezone が見つからなかったときに生じます。

zoneinfo.ZoneInfoNotFoundError

サンプルコード:

from datetime import datetime
from zoneinfo import ZoneInfo
dt = datetime(2022, 7, 1, 13, 15, 0, tzinfo=ZoneInfo("Asia/Tokyo"))

表示されるエラーメッセージの例:

Traceback (most recent call last):
  File "C:\Program Files\Python310\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "", line 3, in 
  File "C:\Program Files\Python310\lib\zoneinfo\_common.py", line 24, in load_tzdata
    raise ZoneInfoNotFoundError(f"No time zone found with key {key}")
zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key Asia/Tokyo'

解説:

この例では、 Asia/Tokyo というキーでタイムゾーンが見つからなかったことが原因で例外が生じています。

本来あるはずのタイムゾーンが見つからない場合は、 pip で tzdata をインストール済みかどうかを確かめてください。
pip freeze -l

また、必要に応じて、 tzdata を再インストールしてください。
pip install tzdata