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進数への変換を行うことができます。