我正在尝试实现一个将十进制数转换为二进制数的算法。
这就是我所拥有的。
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。
我如何实现验证?
答案 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'
无论如何都会返回错误,因此除了修复缩进之外,我不确切地知道您认为代码的错误。