You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python罗马数字转整数实现:如何让非法输入重复提示直到合法

罗马数字转整数代码修改方案

核心修改逻辑是将输入、转换、校验的逻辑放入无限循环中,合法输入处理完成后终止循环,非法输入触发异常后继续下一轮输入提示即可,修改后的完整代码如下:

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:
            num+=roman[s[i]]
            i+=1
      return num

ob1 = Solution()

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!")

修改说明:

  • 新增while True无限循环包裹输入和校验逻辑,保证程序遇到非法输入后不会直接退出
  • 合法罗马数字转换完成、打印结果后执行break终止循环,程序正常结束
  • 输入包含非罗马字符、转换结果超过罗马数字常规最大值3999时,会触发异常进入错误提示分支,提示完成后自动进入下一轮输入流程

内容的提问来源于stack exchange,提问作者code_program

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:18:02