可能重复:
你如何找到一个与整数等效的罗马数字
我正在寻找一个简单的算法(最好在 Python 中)。如何将给定的整数转换为罗马数字?
string Roman(int Num){...}
例如,Roman(1981) 必须生成“MCMLXXXI”。
可能重复:
你如何找到一个与整数等效的罗马数字
我正在寻找一个简单的算法(最好在 Python 中)。如何将给定的整数转换为罗马数字?
string Roman(int Num){...}
例如,Roman(1981) 必须生成“MCMLXXXI”。
我需要相反的一次(从罗马数字到int
)。 维基百科有关于罗马数字如何工作的令人惊讶的详细信息。一旦您意识到事情是这样定义明确的并且可以轻松获得规范,将其转换为代码就相当简单了。
查看此ActiveState 链接上的代码。代码看起来相当有据可查。
我想不出具有此功能的第三方库。有时你必须自己写一些东西,尽管网上有很多关于如何做到这一点的例子。这是来自RoseIndia的一个
对于百、十和单位,规则几乎相同,即您有一个 1、5 和 10 个字符,每个字符的表示都是相同的,只是字母发生了变化。
您可以有一个包含 10 个条目的表,它代表一个模板 0 - 1 = U 2 = UU 3 = UUU 4 = UF 5 = F 6 = FU 7 = FUU 8 = FUUU 9 = UT
现在您的表也有单位、十和百:单位 = IVX 十 = XLC 百 = CDM
将您的数字模板应用于字母表示,以便将 U 替换为第一个字符,将 F 替换为第二个字符,将 T 替换为第三个字符。
千只是一千的M。
从千位开始构建您的字符串,然后是数百位,然后是十位,然后是单位。
如果您要向后构建它,当然您可以从单位修改 10 开始,然后构建您的单位字符串,除以 10 并再次修改并转移到十位字符串,用数百个字符串重复,当您到达数千个字符串时你会知道你的字符串只有一个字符,即一个 M。