问题描述
在一个程序的一部分中,我想确保用户仅输入 所以我用过:
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'
解决方法
您的num = int(raw_input())已经确保它必须是int,如果不是int则会引发ValueError。因此,您的while循环永远不会执行,因为它永远不会获得num的非整数变量。而是从num变量中删除int(),这对您有好处!
,您将用户的输入直接投射到第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()的字符串是否为整数。
,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')
现在,您可以根据需要进行任何外观更改。
快乐的编码。
,您可以使用isinstance
来检查输入是否为int
。
如果输入不是int
循环,直到用户输入int
。
例如:
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