我的程序应该只有一个输入,您可以在其中编写阿拉伯数字,罗马数字或添加罗马数字。例如:
Year: 2001
... MMI
Year: LX
... 60
Year: MI + CI + I
... MCIII
Year: ABC
... That's not a correct roman numeral
嗯,我想你得到了这笔交易。首先,我尝试过这样的事情:
def main():
year = input ("Year: ")
if type(int(year)) == type(1):
arab_to_rome(year)
else:
rome_to_arab(year)
main()
这有明显的问题,首先,除了整数以外的所有内容都将被视为罗马数字,并且不考虑添加。
然后我用Google搜索并找到了一个名为isinstance的东西。这是尝试这样做的结果:
def main(input):
year = input ("Year: ")
if isinstance(input,int):
arab_to_rome(year)
elif isinstance(input,str):
rome_to_arab (year)
else:
print ("Error")
main()
这也有问题。我收到一条错误消息,指出:Invalid syntax.
此代码也不考虑添加。
答案 0 :(得分:0)
您可以使用try / except块来查看输入是否为int
。这构成了代码的前3行。有关详情,请参阅this问题。
year = input('Year: ')
try:
print(arab_to_rome(int(year)))
except ValueError:
result = 0
for numeral in year.split('+'):
numeral.replace(' ','')
result += rome_to_arab(numeral)
print(result)
except
之后的部分是处理添加的简单方法,如果您愿意,可以将其迁移到rome_to_arab
函数中。它将每个+
上的字符串拆分,然后将阿拉伯语计算的结果一起添加,以生成完整的阿拉伯语结果。 replace()
函数删除了任何额外的空格,以确保它不会破坏您的其他方法。请参阅split()
和replace()
上的this个问题或更多信息。
由于您还没有向我们展示转换方法,我将假设arab_to_rome
返回string
,rome_to_arab
返回int
。如果不是,你可能应该改变它们(不仅仅是为了我的例子,而是为了良好的代码约定)