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")
答案 0 :(得分:2)
请改用isinstance(numberchk, int)
,因为int
是一种类型,但numberchk
是该类型的实例。
由于int(input(...
总是返回一个整数,所以你不必使用if-else来检查它。要在输入不是整数时抑制错误引发,请使用try-except
作为@poke提及。
您还可以使用while-loop
和break
重复请求用户输入,直到获得合法输入:
while True:
try:
numberchk=int(input("Enter a Roman numeral or a Decimal numeral:" ))
break
except ValueError:
print('error')
print(int2roman(numberchk))
答案 1 :(得分:1)
if numberchk==int:
这将检查numberchk
类型的int
是否 。它将不检查numberchk
是否为整数(您可能想要这样做)。检查其类型的正确方法是:
if isinstance(numberchk, int):
然而,这也没有意义。获得numberchk
的方式是在字符串上调用int()
:
numberchk=int(input(…))
所以numberchk
总是是一个int。但是,对不是数字的字符串调用int()
可能会失败,因此您可能希望捕获该错误以确定输入是否为数字:
try:
numberchk = int(input("Enter a Roman numeral or a Decimal numeral:"))
except ValueError:
print('Entered value was not a number')
但是这将再次成为问题,因为 - 至少从您正在打印的消息判断 - 您还希望接受罗马数字,这些数字不能通过int
转换为整数。所以你还应该编写一个带罗马数字并将其转换为int的函数。
答案 2 :(得分:0)
检查整数类型,而不是使用int
匹配变量。
您可以使用isinstance
方法检查变量的类型。
答案 3 :(得分:0)