如果用户在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'

解决方法

您的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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...