如果用户在python中输入了非整数,如何重新请求用户输入



在一个程序的一部分中,我想确保用户只输入所以我用了

num=int(raw_input())
while type(num)!= int:
num=int(raw_input('You must enter number only'))
print num 

但是通过这样做,如果用户输入了一些非整数类字符串或其他任何东西,则整个代码将显示错误那么我如何让用户重新输入值,直到他们输入一个整数

输出类似

input your number
hdhe
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-4b5e9a275ca4> in <module>()
1 print'input your number'
----> 2 num=int(raw_input())
3 while type(num)!= int:
4     num=int(raw_input('You must enter number only'))
5 print num
ValueError: invalid literal for int() with base 10: 'hdhe'
while True:
try:
n = int(input('input your number : '))
break
except ValueError:
print('You entered a non integer value, try again.')
continue
print('yay!! you gave the correct value as int')

现在你可以随心所欲地做任何美容改变了。

快乐的编码。

您的num=int(raw_input(((已经确保它必须是int,如果不是int,则会引发ValueError。因此,while循环永远无法执行,因为它永远不会为num获得非int变量。相反,从num变量中删除int((,您就可以了!

您可以使用isinstance来检查输入是否为int

如果输入不是CCD_ 3循环直到用户输入CCD_。

例如:

num = input("Enter an integer:")
if not isinstance(num, int):
while not isinstance(num, int):
try:
num = int(input('You must enter integer only'))
except ValueError as ve:
pass

输出:

Enter an integer:e
You must enter integer onlyr
You must enter integer onlye
You must enter integer only4
Process finished with exit code 0

您将用户的输入直接转换为第2行的int。如果这不是整数,则会引发ValueError异常。当发生这种情况时,我们可以修改您的实现并捕获异常,只有当没有异常发生并且num是整数时才退出循环。

while True:
num=raw_input()
try:
num=int(num)
break
except ValueError:
print "Input is not an integer!"
print num

您还可以使用正则表达式来检查输入值是否为整数,或者使用其他库函数来检查raw_input((中的字符串是否为整数。

相关内容

  • 没有找到相关文章

最新更新