我在网上找到了确保正确的用户输入类型的正常方法,如下所示。
if not isinstance(amount, int):
raise ValueError("Please enter an integer as amount.")
else:
return amount
我将上面的代码包装在一个函数中,然后使用参数调用该函数。我个人更喜欢将其放在函数中。 检查用户输入是否可以接受?(在一堂课中)
def __init__(self, amount):
def check_userinput(amount):
if not isinstance(amount, int):
raise ValueError("Please enter an integer as amount.")
else:
return amount
self.amount = check_userinput(amount)
答案 0 :(得分:3)
除非您先进行转换,否则用户输入可能是str
,而不是int
。要了解这是否可行,Pythonic方式可能是尝试看看,即
def is_int_like(x):
try:
int(x)
return True
except ValueError:
return False
答案 1 :(得分:2)
您可以选择两种方式,社区明智的Python与EAFP principle.一起使用(比请求权限更容易获得宽恕。)我将继续进行强制转换,并捕获异常,以便您可以添加自定义消息。
关于您的代码,它看起来像:
try:
self.amount = int(amount)
except ValueError as e:
raise ValueError("Please enter an integer as amount.")
答案 2 :(得分:1)
来自input
的用户输入将始终是str
。因此,您可以执行以下操作:
def get_checked_input():
while True:
user_input = input('Please enter a number.')
if user_input.isdigit():
return user_input
else:
print('Something other than a number was entered.')