检查用户输入的良好做法

时间:2019-04-17 09:10:18

标签: python python-3.x

我在网上找到了确保正确的用户输入类型的正常方法,如下所示。

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)

3 个答案:

答案 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.')