擅长:python、mysql、java
<pre><code>while True:
diffChoice = input("Select a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()
if diffChoice in ('e', 'm', 'h', 1, 2, 3):
break
else:
diffChoice = input("Incorrect input...\nSelect a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()
</code></pre>
<p><code>while True</code>导致循环永远运行,并且由于只在if条件中有<code>break</code>语句,因此很可能总是执行else部分。。
请注意,如果条件<code>diffChoice in ('e', 'm', 'h', 1, 2, 3)</code>,则1,2,3是整数,但它们总是作为字符/字符串读取,因为您没有执行任何类型转换。。
您应该考虑将IF条件更改为使用整数值作为字符/字符串。<p>
<pre><code>diffChoice in ('e', 'm', 'h', '1', '2', '3')
</code></pre>
<p>我注意到的另一件事是,您在else部分也请求输入,因此当您输入一次错误答案时,您转到else部分,它请求输入,由于else部分中没有任何条件,因此循环再次继续,它再次开始请求输入。。
因此,对于错误的答案,您需要输入两次。。
解决这些问题后,您的代码应该类似于:</p>
<pre><code>while True:
diffChoice = input("Select a difficuilty...\n[e]asy, [m]edium, [h]ard: ").lower()
if diffChoice in ('e', 'm', 'h', '1', '2', '3'):
break
else:
print("Incorrect input...\n")
</code></pre>