Pythonで数値をn進数に変換するプログラムを作成する方法について説明します。以下のコードでは、10進数からn進数に変換する関数を実装しています。また、2進数、8進数、16進数への変換の例も示します。
コード
def decimal_to_n(decimal_number, n): """ decimal_numberをn進数に変換する関数 """ if decimal_number == 0: return '0' if n < 2 or n > 16: return 'nは2から16の範囲で指定してください' digits = '0123456789ABCDEF' result = '' while decimal_number > 0: digit = decimal_number % n result = digits[digit] + result decimal_number //= n return result # 10進数から2進数に変換する例 decimal_number = 12 binary_number = decimal_to_n(decimal_number, 2) print(f'{decimal_number}の2進数は{binary_number}です。') # 10進数から8進数に変換する例 decimal_number = 120 octal_number = decimal_to_n(decimal_number, 8) print(f'{decimal_number}の8進数は{octal_number}です。') # 10進数から16進数に変換する例 decimal_number = 255 hex_number = decimal_to_n(decimal_number, 16) print(f'{decimal_number}の16進数は{hex_number}です。')
このプログラムを実行すると、以下のような結果が得られます。
12の2進数は1100です。 120の8進数は170です。 255の16進数はFFです。
コードの解説
このプログラムでは、引数として与えられたdecimal_number
をn進数に変換する関数decimal_to_n
を定義しています。以下に、この関数の具体的な実装方法を説明します。
- 引数
decimal_number
が0である場合は、0を返します。 - 引数
n
が2未満または16を超える場合は、エラーメッセージを返します。 - 変換する数字の桁を表す文字列
digits
を定義します。2進数から16進数までの場合、桁は0から9までの数字とAからFまでの文字です。 - 変換後の数を格納する変数
result
を定義します。 - 引数
decimal_number
をnで割った余りを求め、変数digit
に代入します。 digits
文字列の中から、インデックスがdigit
の文字を取得し、変数result
の先頭に追加します。decimal_number
をnで割り、整数除算の結果を代入します。decimal_number
が0になるまで5から7の処理を繰り返します。- 最終的に変換された数を返します。
このプログラムでは、引数として与えられた数値をn進数に変換する関数を実装しました。また、特定の進数(2進数、8進数、16進数)に変換する例も示しました。このプログラムはPythonの基本的な文法で実装することができます。Pythonの基礎学習には下記のようなサイトの利用が有効です。