我正在尝试通过整数到罗马数字转换练习,这似乎是新python编码器的通过仪式。我似乎已成功将整数写入罗马数字部分,但我无法将罗马数字转换为整数才能正常工作。换句话说,当用户键入“1999”时,输出成功“MCMXCIX”;但是当用户键入“MCMXCIX”时,输出是错误:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module> rom_to_int(MCMXCIX)
NameError: name 'MCMXCIX' is not defined".
到目前为止,这是我的代码:
def int_to_rom (integer):
returnstring=''
table=[['M',1000],['CM',900],['D',500],['CD',400],['C',100],['XC',90],['L',50],['XL',40],['X',10],['IX',9],['V',5],['IV',4],['I',1]]
for pair in table:
while integer-pair[1]>=0:
integer-=pair[1]
returnstring+=pair[0]
return returnstring
def rom_to_int (string):
returnint=0
table=[['M',1000],['CM',900],['D',500],['CD',400],['C',100],['XC',90],['L',50],['XL',40],['X',10],['IX',9],['V',5],['IV',4],['I',1]]
for pair in table:
continueyes=True
while continueyes:
if len(string)>=len(pair[0]):
if string[0:len(pair[0])]==pair[0]:
returnint+=pair[1]
string=string[len(pair[0]):]
else: continueyes=False
else: continueyes=False
return returnint
我已经到了一半,需要帮助排除故障。任何人都可以看到第二部分有什么问题吗?我查看了其他代码,但它们似乎是针对Python 2或其他编码语言。我还了解到有一个python转换器现在很容易做到这一点(import roman,roman.toRoman(myInt)),但我正在尝试编写函数。任何帮助将不胜感激。
答案 0 :(得分:2)
您获得的错误与您的代码无关。
rom_to_int(MCMXCIX)
但由于MCMXCIX
周围没有引号,因此将其作为(未定义的)变量并抛出您看到的错误。