<blockquote>
<p>Python tell "TypeError: 'str' object is not callable"</p>
</blockquote>
<p>这意味着Python试图调用局部变量<code>a</code>,它是一个<code>str</code></p>
<p>从您的代码:</p>
<pre><code>def a():
a = input("Type 1-5\n")
...
else:
a()
</code></pre>
<p>似乎您正在尝试再次调用<code>a()</code>函数,以便在前一个输入无效时接受新的输入。相反,可以在函数的</em>外部循环调用<code>a()</code>函数<em>,当输入无效时,该函数将重复</p>
<pre><code>def get_input():
a = input("Type 1-5\n")
if a == '1':
print("Your answer is \'1'")
elif a == '2':
print("Your answer is \'2'")
elif a == '3':
print("Your answer is \'3'")
elif a == '4':
print("Your answer is \'4'")
elif a == '5':
print("Your answer is \'5'")
else:
print("Invalid input")
return False # we did not get a valid input
return True # we successfully received a valid input
is_valid_input = False
while not is_valid_input:
is_valid_input = get_input()
</code></pre>
<p>注意,我还将函数重命名为<code>get_input</code>,以使其更清晰。它还将它与同名的局部变量(<code>a</code>)区分开来,这有助于避免出现那种<code>TypeError</code>,因为更清楚的是哪个是<code>str</code>,哪个是函数</p>
<pre><code>$ python3 test.py
Type 1-5
6
Invalid input
Type 1-5
a
Invalid input
Type 1-5
1
Your answer is '1'
$
</code></pre>