擅长:python、mysql、java
<p>问题是<code>input()</code>返回作为python表达式计算的原始用户输入。因此,当你在控制台上输入类似“someinput”的内容时,会发生以下情况:</p>
<ol>
<li>原始输入从控制台捕获为字符串</li>
<li>然后,该字符串被解析为一个python表达式(因此,假设您只需在程序中键入此字符串,在本例中,它将成为名为“someinput”的变量</li>
<li>当对此python表达式调用isinstance()时,python解释器找不到已定义的名为“someinput”的变量,因此它抛出异常。在</li>
</ol>
<p>您真正想要做的是使用<code>raw_input()</code>,这将返回一个代表用户输入的字符串。由于现在从控制台接收字符串,因此需要某种方法检查字符串是否为int(因为isinstance将始终返回字符串)</p>
<p>现在要确定字符串是否是一个数字,可以使用isdigit()之类的东西,但是要小心,这个函数将验证任何只包含数字的字符串(因此0393是有效的)。在</p>
<p>以下是需要进行的更正:</p>
<pre><code>def askFor(request):
"""Program asks for input, continues to ask until an integer is given"""
num = ' '
while (num.isdigit() == False):
num = raw_input(request)
else:
return num
</code></pre>