Python输入验证 - 接受正浮点数或int

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python输入验证 - 接受正浮点数或int相关的知识,希望对你有一定的参考价值。

似乎我们要求很多,但我们正在寻求一个简短的验证,因为积极的int或浮动输入作为输入。下面的代码拒绝否定,文本和空条目 - 耶!它接受int作为有效,但为什么不像1.1传入? (看似正数字条目)我们希望正1和1.1的输入通过。有没有两个单独的块,包括try / catch?

bookPrice = input("What is the cost of your book? >> ")
while bookPrice.isnumeric() is False or float(bookPrice) < 0:
    bookPrice = input("Use whole # or decimal, no spaces: >> ")
bookPrice = float(bookPrice)
print("Your book price is ${0:<.2f}.".format(bookPrice))
答案

isnumeric()正在检查所有字符是否都是数字(例如1,2,100 ......)。

如果你放一个'。'在输入中,它不算作数字字符,也不算' - ',因此返回False

我要做的是尝试将输入转换为浮点数,并解决输入错误。您可以使用isinstance(),但为此您需要将输入转换为除字符串以外的其他内容。

我想出了这个:

message = "What is the cost of your book? >>"
while True:
    bookPrice = input(message)
    try:
        bookPrice = float(bookPrice)

        if bookPrice  <= 0:
            message = "Use whole # or decimal, no spaces: >> "
            continue
        currect_user_input = True

    except ValueError:
        currect_user_input = False
        message = "Use whole # or decimal, no spaces: >> "

    if currect_user_input:
        print("Your book price is ${0:<.2f}.".format(bookPrice))
        break

以上是关于Python输入验证 - 接受正浮点数或int的主要内容,如果未能解决你的问题,请参考以下文章

仅接受浮点数或整数的 Html 输入类型 [重复]

Python 自动化指南(繁琐工作自动化)第二版:八输入验证

用于浮点数或 int 的 Python 正则表达式,而不是将浮点数分成两个浮点数

PYTHON,Midpoint方法,TypeError:'float'对象不能解释为整数

matlab常用函数名``谁给我个啊``谢谢`

常用的正则表示式