<p>您要检查“等于、小于或大于”的代码是正确的,但您在代码中有一个问题。</p>
<p>在Python(3.0及更高版本)中,<a href="https://docs.python.org/3/library/functions.html#input" rel="nofollow">^{<cd1>}</a>返回一个字符串。所以,你在比较一个字符串<code>number</code>和一个数字<code>irand</code>。有些语言可能会自动转换一种或另一种方式,但这可能会令人困惑,*,所以Python拒绝这样做,而是引发一个<code>TypeError: unorderable types: int() < str()</code>。</p>
<p>解决方案是将输入解析为一个数字,如下所示:</p>
<pre><code>number = int(number)
</code></pre>
<p>如果用户给您无效的输入,比如字母<code>c</code>,而不是从1到10的数字,则会引发<code>ValueError</code>。如果您想更好地处理这个问题,可以使用<code>try</code>语句。</p>
<p>另外,您可能需要<code>elif</code>,而不是<code>if</code>。如果你一切都对,这没什么区别,但如果你犯了错误,它有助于抓住错误。</p>
<p>所以,把它们放在一起:</p>
<pre><code>while True:
number = input("Pick a number 1-10: ")
try:
number = int(number)
except ValueError:
print(number, 'is not a number, try again.')
continue
if number < irand:
print(" ")
print("That's too high, try again.")
elif number > irand:
print(" ")
print("That's too low, try again.")
else:
print(" ")
print("You got it right! You won!")
break
</code></pre>
<p>(注意,我在<code>except</code>子句中使用了<code>continue</code>,所以我们跳过了循环的其余部分,不必担心<code>number</code>不再是数字。我们也可以将整个循环移动到<code>else</code>原因中,或者对每个<code>if</code>添加一个<code>isinstance</code>检查,等等,但这有点笨拙。)</p>
<hr/>
<p><sub>*考虑将字符串<code>"2"</code>与数字<code>10</code>进行比较。将字符串转换为数字的语言会说<code>2 < 10</code>;将数字转换为字符串的语言会说<code>"10" < "2"</code>。两者都不是“对的”或“错的”,但都令人惊讶的是有一半的时间…</sub></p>