使用循环时的回溯错误

时间:2014-07-26 21:01:28

标签: python cmd

以下代码是用python编写的。

import subprocess as sp

def user_input():
    sp.call('cls',shell=True)
    print('[1]: ASCII to Binary')
    print('[2]: Binary to ASCII')
    valid_answer()

def valid_answer():
    while True:
        try:
            user_input = int(input('Please type 1 or 2: '))
            sp.call('cls',shell=True)
            break
        except ValueError:
            print('Please enter a valid input...')
            sp.call('pause',shell=True)
            user_input()

    while True:
        if user_input < 0:
            print('Input must be 1 or 2.')
            sp.call('pause',shell=True)
            user_input()
        elif user_input > 2:
            print('Input must be 1 or 2.')
            sp.call('pause',shell=True)
            user_input()
        else:
            break
    if user_input == (1):
        print('Good.')
        exit
    elif user_input == (2):
        print('Good.')
        exit

user_input()

每当我在CMD Shell中运行该文件时,它都可以正常工作,直到我到达这部分代码:

while True:
    if user_input < 0:
        print('Input must be 1 or 2.')
        sp.call('pause',shell=True)
        user_input()
    elif user_input > 2:
        print('Input must be 1 or 2.')
        sp.call('pause',shell=True)
        user_input()
    else:
        break

如果user_input没有返回1或2,我收到此错误:

Error Image

我无法弄清楚我的代码有什么问题,而且我也不了解CMD Shell引发的任何错误。有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

问题在于:

user_input = int(input('Please type 1 or 2: '))

此时,您将user_input设置为一个数字,然后稍后您尝试使用user_input()拨打该号码,这与执行此操作相同:

>>> user_input = 1
>>> user_input()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable