python - 将罗马转换为整数 - 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!")
解决方案
尝试这个:
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!")
推荐阅读
- javascript - 是否可以保存对动态组件的引用并稍后更新@Input/@Output?
- c# - 无法在鼠标事件处理程序中读取 WPF 中键的保持状态 - VMWare Fusion for Mac 上的 Windows 客户机中的行为不一致
- amazon-web-services - SES 发送电子邮件示例,用于给出“在完成请求之前退出进程”错误
- python - 在 Pandas Dataframe 中查找没有零和 NaN 的最小值
- javafx - JavaFX 使用多个图像形成一个文件夹
- html - 用省略号和按钮将文本右对齐(react-js)
- python - 将一列的中位数设置为零熊猫数据框
- php - 正确删除带 0.1 等小数的前导零
- android - 如何将一个孩子的 textview 宽度设置为与另一个孩子的 textview 完全相同?
- angular - 错误:formGroup 需要一个 FormGroup 实例 - 在向 formArray 添加新组件时