首页 > 解决方案 > 使用python的罗马数字转换器

问题描述

我想问我是否应该继续这种罗马数字转换器的想法/方式,或者我应该考虑一个差异代码。

这是我目前的想法:

d_roman = { "I":1, "V": 5, "X":10}

rntconvert = raw_input("Enter Roman Num: " )

x = len(rntconvert)
if rntcovert is in dictionary

    #print value of rntcovert

elif x==2

    #add the value of two roman numbers except if first roman number is lower than the next then it will be subtracted 
    #(ex. IX, first char has lower value than next char, so it's like,  10 - 1)

这是可行的吗?先感谢您。

编辑:我使用 2.7 解释是:我将每个返回的字符串量分开求解

标签: python

解决方案


我对此的解决方案:

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

print(solution().roman_to_int('MMMCMLXXXVI'))
print(solution().roman_to_int('MMMM'))
print(solution().roman_to_int('C'))


推荐阅读