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
相关产品推荐
相关产品推荐

