TypeError: 'str' object cannot be interpreted as an integer - `bin()`に文字列を渡したときのエラー対処法を解説します。

エラーメッセージ

TypeError: 'str' object cannot be interpreted as an integer

このエラーは、`bin()`関数に文字列型の値を渡したときに発生します。`bin()`関数は整数値のみを引数として受け付けるため、文字列を直接渡すことはできません。

解決策

1. 文字列を整数に変換してから`bin()`を使用する

# エラーが発生するコード
number = "10"
binary = bin(number)  # TypeError

# 正しいコード
number = "10"
binary = bin(int(number))  # '0b1010'

2. 数値リテラルを直接使用する

# 正しいコード
binary = bin(10)  # '0b1010'

実践的な使用例

# 文字列から2進数への変換
user_input = "42"
binary_number = bin(int(user_input))
print(binary_number)  # '0b101010'

# 先頭の'0b'を除いて表示
print(binary_number[2:])  # '101010'

# 複数の数値を変換
numbers = ["10", "20", "30"]
binary_numbers = [bin(int(n)) for n in numbers]
print(binary_numbers)  # ['0b1010', '0b10100', '0b11110']

注意点

  • `bin()`関数は必ず整数値を引数として必要とします
  • 返り値は常に文字列型で、先頭に'0b'が付きます
  • 負の数も変換可能ですが、結果は負の符号('-')と'0b'が付いた形になります

まとめ

`bin()`関数を使用する際は、必ず整数値を渡す必要があります。文字列型の数値を変換する場合は、`int()`関数を使って整数に変換してから`bin()`関数を適用しましょう。これにより、TypeError を回避し、正しく2進数への変換を行うことができます。