Roman/Numeral Conversion in Python 3.5
我正在努力完成整数到罗马数字的转换练习,这似乎是新的Python编码人员的一个仪式。我似乎已经成功地将整数正确地写入了罗马数字部分,但我无法将罗马数字正确地写入整数。换句话说,当用户键入"1999"时,输出成功地为"mcmxcix";但是当用户键入"mcmxcix"时,输出错误:
1 2 3 | Traceback (most recent call last): File"<pyshell#2>", line 1, in <module> rom_to_int(MCMXCIX) NameError: name 'MCMXCIX' is not defined". |
这是迄今为止我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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 |
号
我已经走到一半了,需要帮助排除故障。有人能看看第二部分有什么问题吗?我看过其他代码,但它们似乎指向了Python2或其他编码语言。我还了解到现在有一个python转换器可以很容易地做到这一点(import-roman,roman.toroman(myint)),但是我正在尝试练习编写函数。任何帮助都将不胜感激。
您得到的错误与您的代码无关。你有
1 | rom_to_int(MCMXCIX) |
但是,由于在