Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで整数をローマ数字に変換するプログラム


数値がnumであるとします。それを同等のローマ数字に変換する必要があります。ローマ数字には、以下のような記号と値が含まれています-

  • "I" =1
  • "V" =5
  • "X" =10
  • "L" =50
  • "C" =100
  • "D" =500
  • "M" =1000

これらの記号は通常、最大から最小、左から右の順序で記述され、すべての記号の値を合計することで計算できます。ただし、いくつかの特殊なケースでは、低い値のシンボルが高い値のシンボルの左側にあり、彼は低い値が高い値から減算されることを示します。

これらはそのような場合の例です-

  • 「I」は「V」の前、値4です。
  • 「I」は「X」の前、値9です。
  • 「X」は「L」の前にあり、値は40です。
  • 「X」は「C」の前にあり、値は90です。
  • 「C」は「D」の前にあり、値は400です。
  • 「C」は「M」の前にあり、値は900です。

ローマ数字にはいくつかの規則もあります-

  • シンボルが3回以上繰り返されることはありません。
  • 記号「V」、「L」、および「D」は繰り返されません。

したがって、入力がn =1520の場合、「MDXX」は1000 + 500 + 10 + 10 =1520を示すため、出力は「MDXX」になります。

これを解決するには、次の手順に従います-

  • res:=空白の文字列
  • table =この形式のペア(val、symbol)を含むリスト。ここで、valは値であり、symbolは関連するシンボルです[(1000、 "M")、(900、 "CM")、(500、 " D ")、(400、" CD ")、(100、" C ")、(90、" XC ")、(50、" L ")、(40、" XL ")、(10、" X " )、(9、 "IX")、(5、 "V")、(4、 "IV")、(1、 "I")]
  • テーブル内の各ペア(cap、roman)について、
    • d:=num/capのフロア
    • m:=num mod cap
    • res:=res + roman * d
    • num:=m
  • return res

理解を深めるために、次の実装を見てみましょう-

def solve(num):
   res = ""
   table = [
      (1000, "M"),
      (900, "CM"),
      (500, "D"),
      (400, "CD"),
      (100, "C"),
      (90, "XC"),
      (50, "L"),
      (40, "XL"),
      (10, "X"),
      (9, "IX"),
      (5, "V"),
      (4, "IV"),
      (1, "I"),
   ]
   for cap, roman in table:
      d, m = divmod(num, cap)
      res += roman * d
      num = m

   return res

num = 1520
print(solve(num))

入力

1520

出力

MDXX

  1. キロメートルをマイルに変換するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −距離はキロメートルで与えられ、マイルに変換する必要があります 私たちが知っているように、1キロメートルは0.62137マイルに相当します。 使用する式 Miles = kilometer * 0.62137 それでは、以下の実装の概念を見てみましょう- 例 kilometers = 5.5 # conversion factor as 1 km = 0.621371 miles conv = 0.621371 # calculation miles = kilometers * conv print(k

  2. 16進文字列を10進数に変換するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 16進文字列が与えられたので、それを10進数に変換する必要があります。 問題を解決するための2つのアプローチがあります- ブルートフォースアプローチ 組み込みモジュールの使用 ブルートフォース方式 ここでは、明示的な型キャスト関数、つまり整数を利用します。この関数は、2つの引数、つまり16進数と同等の引数とベース(16)を取ります。この関数は、16進文字列を整数型の同等の10進数に変換するために使用されます。これは、さらに文字列形式に型キャストして戻すことができます。 例 #input strin