numberchk=(int(input("Enter a Roman numeral or a Decimal numeral:" )))
def int2roman(number):
numerals={1:"I", 4:"IV", 5:"V", 9: "IX", 10:"X", 40:"XL", 50:"L",
90:"XC", 100:"C", 400:"CD", 500:"D", 900:"CM", 1000:"M"}
result=""
for value, numeral in sorted(numerals.items(), reverse=True):
while number >= value:
result += numeral
number -= value
return result
if numberchk==int:
print(int2roman(int(numberchk)))
else:
print("error")
尝试使用isdigit()函数。你知道吗
替换代码中的此部分
与
改用
isinstance(numberchk, int)
,因为int
是一个类型,而numberchk
是该类型的实例。你知道吗因为
int(input(...
总是尽可能长地返回整数,所以不必使用if-else检查它。要在输入不是整数时抑制错误引发,请使用@poke中提到的try-except
。你知道吗您还可以使用
while-loop
和break
重复请求用户输入,直到获得合法输入:这将检查
numberchk
是否等于int
类型。它将不检查numberchk
是否为整数(您可能希望这样做)。检查其类型的正确方法如下:然而,这也没有道理。获取
numberchk
的方法是对字符串调用int()
:因此
numberchk
将始终为int。但是,对不是数字的字符串调用int()
可能会失败,因此您可能希望捕获该错误以确定输入是否为数字:但这也会有问题,因为至少从您打印的消息来看,您还希望接受罗马数字,而罗马数字不能通过
int
转换为整数。因此,您还应该编写一个函数,它接受一个罗马数字并将其转换为int相关问题 更多 >
编程相关推荐