如何拒绝所有非整数输入?

时间:2017-05-10 06:49:36

标签: python

我需要帮助来解决以下问题:
预期产出:

  

请输入一个整数:sfasf; jk
  错误。请输入INTEGER:1
  你输入1

我的代码:

num=input("Please input an integer: ")
while type(num)!=int:
    num=input("Error. Please input an INTEGER: ")
print("You input",num)

问题:
我希望我的代码保持循环,直到输入整数。但是,无论我给出什么输入,代码都会拒绝它,即使我的输入是整数。如何检查输入是否为整数?根据我的问题,必须拒绝输入字符串和浮点数。

2 个答案:

答案 0 :(得分:1)

input返回值始终为str类型。您可以尝试将其强制转换为int并处理异常,或者更好地使用str.isdigit()方法来检查它是否为整数:

num = input("Please input an integer: ")
while not num.isdigit():
    num = input("Error. Please input an INTEGER: ")
print("You input", int(num))

此外,如果您想在不弄乱异常的情况下支持标记,可以使用

num[0] in '+-' and num[1:].isdigit() or num.isdigit()

作为条件。

答案 1 :(得分:0)

为什么不使用(?<!\])\[ABC\]\[BBC\](?!\[) 块,这样就可以处理所有非整数

编辑:: 示例

try : except

<强>输出

num = False # This can be anything bool/float/etc.. as long it is not an int
while type(num) is not int:

    try:
    # Cast input as int
        num=int(input("Please input an integer: "))

    except ValueError:
    # Handles all non int's I catch the right exception
    # Leaving except empty is considered bad form
        print('Not correct format')

# Input passes converting so it must be an int
print("Num is correct type")