CodeKata#6の保存に使用


質問する


アルファベットを数字1~3999の間のアルファベットsに変換してパラメータとして使用する場合は、該当する数字を返します.
ローマ数字を数字としてマークします.
SymbolValueI1V5X10L50C100D500M1000
ローマ字を数字で読む方法は、左からローマ字を順番に付けます.
III = 3
XII = 12
XXVII=27.
しかし表現4の場合はIIIではなくIV
後ろの数字から前の数字を引けばいいです
9はIXです.
VとXの前に来て、4、9
XはLとCの前40,90に来る
CはD,Mの前に来て,400,900

に答える

def roman_to_num(s):
        rom = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
        int = 0
        for i in range(len(s)):
            if i > 0 and rom[s[i]] > rom[s[i - 1]]:
                int += rom[s[i]] - 2 * rom[s[i - 1]]
            else:
                int += rom[s[i]]
        return int

  • まず私が解けなかったのは、他のブログの解答であることを示しています.

  • 私の考えは、まずディクシャナに価格を置いて、for文を利用して近づくことですが、実現しませんでした.

  • 上記のプールが論理的に現在の値より小さい場合は、現在の値から値を減算し、intに値を追加し続けます.そうでない場合は、リストの値をintに追加します.

  • 論理はそうですが、実はまだ感じていないので、もっと練習しなければなりません.