数値を特定の位置表記から選択した別の位置表記に変換できる関数を作成しようとしています。2 進数から* 16 進数 * 3 進数までです。そのためには、最初の数値 (文字列として指定) を 10 進数に変換して、さらに簡単に変換できるようにする必要があります。
しかし、私の機能には間違いがあるようです。
私が持っているもの:
def decimal(number, base1):
number_dec = 0
val = '0123456789abcdefghijklmnopqrstuvwxyz'
if base1 != 10:
for digit in number[::-1]:
factor = val.find(digit)
for exp in range(0, len(number)):
number_dec += factor * base1 **exp
else:
number_dec = number
return number_dec
たとえば、次のように入力します。
decimal('4d2', 16)
この関数は、正しい '1234' ではなく '5187' を返します。
間違いはどこですか?