首页 > 解决方案 > 将罗马转换为整数 - Python

问题描述

我尝试了以下从 Roman 转换为 Integer 的 Python 3 代码。

代码工作正常。但是当我输入整数或字符串(例如:1、2 或任何整数、字符串)时出现问题,它显示消息“输入无效!再试一次!” 程序结束。我想如果程序输入有效,它将结束,但如果输入无效,输入消息应该继续,直到它成为有效输入。

这是我的代码:

class Solution(object):
   def roman_to_int(self, s):
      """
      :type s: str
      :rtype: int
      """
      roman = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,'IV':4,'IX':9,'XL':40,'XC':90,'CD':400,'CM':900}
      i = 0
      num = 0
      while i < len(s):
         if i+1<len(s) and s[i:i+2] in roman:
            num+=roman[s[i:i+2]]
            i+=2
         else:
            #print(i)
            num+=roman[s[i]]
            i+=1
      return num
ob1 = Solution()

message = str(input("Please enter your roman number: "))
try:
    n = ob1.roman_to_int(message)
    if n > 3999: raise Exception()
    print(n)
except Exception:
    print("Invalid input! Try again!")

标签: pythonpython-3.xintegerroman-numerals

解决方案


尝试这个:

while True:
    message = input("Please enter your roman number: ")
    try:
        n = ob1.roman_to_int(message)
        if n > 3999: raise Exception()
        print(n)
        break
    except Exception:
        print("Invalid input! Try again!")

推荐阅读