Collat​​z - 输入验证

时间:2016-04-29 06:32:36

标签: python

我是编码的新手,并一直在跟踪使用Python自动化无聊的东西。最新的项目正在写一个Collat​​z序列,这是相当直接的。但是,我一直无法弄清楚如何通过try和except添加输入验证。

由于try和except必须在循环内,因此错误发生在输入阶段 - int(input())之前。但是,如果我在while循环中添加输入,它会在每个循环后请求我输入新的输入。

是否有一种添加for和except的简单方法,以便在输入无效时显示错误消息并等待新输入?提前谢谢。

print('Hello, please input an integer.')
number = int(input())

while number != 1:
      if number % 2 == 0:
        print(number // 2)
        number = number // 2
      elif number % 2 == 1:
         print(3 * number + 1)
         number = 3 * number + 1

1 个答案:

答案 0 :(得分:0)

您可以创建一个单独的函数来处理整数输入以及验证,并在此处多次调用它:

def accept_int():
    while True:
        try:
            num=int(input())
            break
        except:
            print("An error occured, please re-enter!")
            continue
    return num

print('Hello, please input an integer.')
number = accept_int()

while number != 1:
      if number % 2 == 0:
        print(number // 2)
        number = number // 2
      elif number % 2 == 1:
         print(3 * number + 1)
         number = 3 * number + 1

输出:

$ python3 d.py 
Hello, please input an integer.
abcd
An error occured, please re-enter!
23.5
An error occured, please re-enter!
32
16
8
4
2
1
$