擅长:python、mysql、java
<p>代码中的错误不是第25行而是第20行。简单地检查变量将返回True,除非变量是<code>None</code>或false。因此,当您执行<code>if verb</code>时,如果<code>verb</code>被设置为一个元组,它将计算为<code>True</code>。由于第一个<code>elif</code>的计算结果是<code>True</code>,因此该块得到执行,代码继续在if..elif..else之外继续,而不计算第二个<code>elif</code>,即第三个条件,它与第一个<code>elif</code>有相同的问题。这是python试图找到一个真正的条件,一旦找到一个,它就停止检查任何其他条件。在</p>
<p>您要检查单词是在<code>direction</code>还是{<cd3>}还是{<cd11>}或{<cd12>}。遗憾的是,<code>either..or</code>模式在Python中不存在。在</p>
<p>正确的python检查方法如下:</p>
<p><code>elif i.lower() in direction + verb + stop + noun:
...
elif i not in direction + verb + stop + noun:
...
</code></p>
<p>您的<code>test_errors</code>函数也有点不正确。<code>lexicon</code>是一个<code>dict</code>,而{<cd18>}是一个函数,两者是分开的,因此不能调用<code>lexicon.scan()</code>。它应该是<code>scan()</code>。在</p>
<p><code>assert_equal(scan("ASDFADFASDF"), [('error', 'ASDFADFASDF')])</code></p>