我需要帮助来解决以下问题:
预期产出:
请输入一个整数: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)
问题:
我希望我的代码保持循环,直到输入整数。但是,无论我给出什么输入,代码都会拒绝它,即使我的输入是整数。如何检查输入是否为整数?根据我的问题,必须拒绝输入字符串和浮点数。
答案 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")