擅长:python、mysql、java
<p>通常,如果函数结束时没有到达带有值的<code>return</code>,则返回<code>None</code></p>
<p>在您的功能中,这可以通过两种方式实现:</p>
<ol>
<li>{<cd3>}和{<cd4>}都是错误的。当这种情况发生时,代码执行将在两个<code>if</code>块下面结束,在这两个块下面没有更多的代码要执行,并且<code>None</code>将被返回,因为没有任何东西要返回。(为了理解“truthy”和“falsy”的意思,<a href="https://stackoverflow.com/a/39983806/1031534">this SO answer</a>解释得很好。
)</li>
<li>如果<code>playerOneInput</code>和<code>playerTwoInput</code>中的一个是真的,那么同样的事情也会发生,但是当测试它是否是<code>in Board</code>时,它的计算结果是<code>False</code>。没有<code>else:</code>来捕获执行,它最终没有什么可返回的,因此它返回<code>None</code></李>
</ol>
<p>要修复2,您可能需要更改</p>
<pre><code> if playerOneInput:
if playerOneInput in Board:
</code></pre>
<p>到</p>
<pre><code> if playerOneInput and playerOneInput in Board:
</code></pre>
<p>如果你需要两者都是<code>True</code>,并且当播放器输入是真实的,而不是在棋盘上时,你不想以不同的方式处理它</p>
<p>要修复1,您需要确定是否要在开始时测试输入,并在<code>playerOneInput</code>或<code>playerTwoInput</code>(甚至可能是<code>Board</code>)都不可用时引发错误,或者是否要在函数末尾的<code>else:</code>中处理它</p>
<p>另外,您可能只需要接收一个播放器的输入,然后调用该函数两次</p>