根据user2486的建议,这是我当前的代码。
def romanMap():
map=(("M", 1000),("CM", 900),("D", 500),("CD", 400),("C", 100),("XC", 90),("L", 50),("XL", 40),("X", 10),("IX", 9),("V", 5),("V", 4),("I", 1))
return map
firstNum=ns([0])
secondNum=ns([1])
def main():
ns=str(input("Enter a roman numeral"))
total=0
result=0
while ns:
firstNum=(romanMap(ns[0]))
secondNum=(romanMap(ns[1])
if firstNum is len(ns)>1 or secondNum-1:
total=total+firstNum
ns=ns[1:]
else:
total=total+ns[1]-ns[0]
ns=ns[2:]
print (total)
main()
我在使用 while ns:
时遇到了以下错误:UnboundLocalError: local variable 'ns' referenced before assignment。
ns
的赋值。还要注意1)如果len(ns)== 1
,则ns [1]
可能会引发异常;2)循环外的初始赋值firstNum / secondNum
没有任何作用;3)总数应仅从firstNum / secondNum
计算,因为ns [x]
返回一个字符串;4)实现一个名为“numberOfNumeral”的函数,执行我建议的操作,并使用它;) - user2864740