Even if the first command in if is true it doesn't print what i want , it only print the else command
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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") |
使用
由于
也可以使用
1 2 3 4 5 6 7 | while True: try: numberchk=int(input("Enter a Roman numeral or a Decimal numeral:" )) break except ValueError: print('error') print(int2roman(numberchk)) |
1 | if numberchk==int: |
这将检查
1 | if isinstance(numberchk, int): |
然而,这也没有意义。你得到
1 | numberchk=int(input(…)) |
因此,
1 2 3 4 | try: numberchk = int(input("Enter a Roman numeral or a Decimal numeral:")) except ValueError: print('Entered value was not a number') |
但这又将是一个问题,因为至少从您打印的消息来看,您还希望接受罗马数字,这些数字不能通过
尝试使用isdigit()函数。
在代码上替换此部件
1 | if numberchk==int: |
具有
1 | if numberchk.isdigit(): |
检查整数类型而不是与
您可以使用