Python中文本菜单的处理

Python中文本菜单的处理,python,Python,我正在尝试用Python创建一个基于文本的菜单 代码如下: #!/usr/bin/env python def testcaseOutput(): print '1. Add. 2. Subtract. 3. Divide. 4. Multiply' try: answer = int(raw_input('Enter a value (1 - 4) >. ')) except ValueError: print 'Inval

我正在尝试用Python创建一个基于文本的菜单

代码如下:

#!/usr/bin/env python

def testcaseOutput():

    print '1. Add. 2. Subtract. 3. Divide. 4. Multiply'

    try:
        answer = int(raw_input('Enter a value (1 - 4) >. ')) 
    except ValueError:
        print 'Invalid input. Enter a value between 1 -4 .'
        testcaseOutput()

    if answer in range(1, 5):
        return answer
    else:
        print 'Invalid input. Enter a value between 1 - 4.'
        testcaseOutput()
我的问题:

当用户输入无效输入(即不是数字)时,我希望再次调用此函数。因此,我使用了递归方法,我认为这是一种糟糕的设计。我在未来再次使用这种方法

if answer in range(1, 5). 
还有别的办法吗?当输入无效时,我需要再次调用提示


还有,我有没有办法将这两个约束合并在一起:检查输入是否是一个数字,以及数字是否在(1,5)范围内?如你所见,我正在逐一检查

一种可能的重构方法是使用循环,该循环继续打印指令并读取输入,直到给出可接受的输入:

def testcaseOutput():
    while True:
       print '1. Add. 2. Subtract. 3. Divide. 4. Multiply'

       try:
           answer = int(raw_input('Enter a value (1 - 4) >. ')) 
       except ValueError:
           print 'Invalid input. Enter a value between 1 -4 .'
           continue

      if not answer in range(1, 5):
          print 'Invalid input. Enter a value between 1 - 4.'
          continue

      return answer

一种可能的重构方法是使用循环,该循环继续打印指令并读取输入,直到给出可接受的输入:

def testcaseOutput():
    while True:
       print '1. Add. 2. Subtract. 3. Divide. 4. Multiply'

       try:
           answer = int(raw_input('Enter a value (1 - 4) >. ')) 
       except ValueError:
           print 'Invalid input. Enter a value between 1 -4 .'
           continue

      if not answer in range(1, 5):
          print 'Invalid input. Enter a value between 1 - 4.'
          continue

      return answer

将整个函数体放入
while True:
循环(当然是删除递归调用)。

将整个函数体放入
while True:
循环(当然是删除递归调用)。

谢谢。我想用一个循环,但不知道怎么做。谢谢。我想使用循环,但不知道如何进行。相关:相关: