Python:重复try / except语句直到满足条件

时间:2017-10-02 17:06:37

标签: python-3.x try-catch except collatz

我正在学习python,我被困在一个项目上。该项目的主要部分是对collat​​z序列进行编码,这不是一个问题。下一部分是使用try和except验证用户输入,以确保只给出一个整数值。 到目前为止,我有以下代码:

def collatz(number):
    if number % 2 == 0:
        return number // 2
    elif number % 2 == 1:
        return (3*number) + 1


print('Please enter a number:')
number = ''
try:
    number = int(input())
except ValueError:
    print('Incorrect type of data entered.\nPlease enter an integer!')
    while number is not int:
        try:
            number = int(input())
        except ValueError:
            print('Incorrect type of data entered.\nPlease enter an integer!')

output = number

while output != 1:
    output = collatz(output)
    print(output)

我的问题是我不确定如何重复try / except语句,直到我从用户那里得到一个整数。现在,如果我输入一个字符串而不是一个整数,程序进入一个循环并输入一个整数后来没有帮助。我在这个主题上阅读了不少主题,但他们并没有解释上述问题。

真的想了解我出错的地方。

2 个答案:

答案 0 :(得分:0)

您可以使用:

valid=False
while not valid:
    try:
        number=int(input())
        valid=True
    except ValueError:
        print('Incorrect type of data entered.\nPlease enter an integer!')

答案 1 :(得分:0)

只需使用isinstance(x, int),即输入x。

如果x是int,则返回True。只是另一种解决方案,以防你寻找不同的方式!