如果输入为NaN,如何引发错误?

时间:2016-09-13 08:07:13

标签: python

我正在尝试实现一个将十进制数转换为二进制数的算法。

这就是我所拥有的。

def binary_converter(n):
    if n < 0:raise ValueError, "Invalid input"
    if n >255:raise ValueError, "Invalid input"
    if n > 1:
        binary_converter(n//2)
        print(n % 2,end = '')

# Take decimal number from user
dec = int(input("Enter an integer: "))
binary_converter(dec)

我的问题是这些问题:

    if n < 0:raise ValueError, "Invalid input"
    if n >255:raise ValueError, "Invalid input"

我试图验证输入只包含数字0-9。

我如何实现验证?

1 个答案:

答案 0 :(得分:1)

有两种方法。其中一个是使用字符串.isdigit().isdigit()的一般问题是它不能用于否定,但是对于你的代码,它确实不是问题。尝试使用以下自定义函数替换输入:

def positive_int_input():
    s = input("Enter an integer: ")
    if not s.isdigit():
        raise ValueError("Input is not a positive integer")
    else:
        return int(s)

一些例子:

positive_int_input()
#   Enter an integer: 42
#-> 42

positive_int_input()
#   Enter an integer: 3.14
#   ValueError: Input is not an integer

positive_int_input()
#   Enter an integer: Hello World!
#   ValueError: Input is not an integer

话虽如此:

int("Some String")
# ValueError: invalid literal for int() with base 10: 'Some String'

无论如何都会返回错误,因此除了修复缩进之外,我不确切地知道您认为代码的错误。