擅长:python、mysql、java
<pre><code>while p1 != "rock" or p1 != "paper" or p1 != "scissors":
p1 = str(input("Please select rock/paper/scissors: "))
</code></pre>
<p>它说:<code>p</code>可能不是<code>rock</code>,<code>paper</code>,<code>scissors</code>。如果<code>p</code>等于这些单词中的任何一个,则整个谓词变成<code>True</code>,循环继续。在应用<a href="https://en.wikipedia.org/wiki/De_Morgan%27s_laws" rel="nofollow noreferrer">De Morgan transform</a>时,您将<code>or</code>误认为<code>and</code>。无法退出循环,因为没有<code>p</code>可以同时等于<code>rock</code>、<code>paper</code>、<em>和</em><code>scissors</code>。你知道吗</p>
<p>你想要的是</p>
<pre><code>while True:
word = input("Please select rock/paper/scissors: ") # it's already a string.
if word in ("rock", "paper", "scissors"):
break
</code></pre>