擅长:python、mysql、java
<p>你的主要问题是你有<code>list</code>的<code>list</code>,而不是<code>list</code>的<code>str</code>,因为这行:</p>
<pre><code>us = [str(input("Enter a subject: "))]
</code></pre>
<p>这些括号将<code>str</code>包装起来,形成一个单元素<code>list</code>。因此,如果您键入<code>foo</code>,<code>barly</code>,然后<code>ly</code>,(我们将跳过所有10个),您将得到一个<code>list</code>:</p>
<pre><code>[["foo"], ["barly"], ["ly"]]
</code></pre>
<p>当你可能预料到:</p>
<pre><code>["foo", "barly", "ly"]
</code></pre>
<p>问题是<code>in</code>检查检查的是<code>list</code>包装器的<code>in</code>检查,而不是<code>str</code>,因此它只在实际的<code>ly</code>上匹配(因为<code>"ly"</code>在<code>list</code>中),而不是其他任何东西(因为它们不等于<code>"ly"</code>)。你知道吗</p>
<p>拆下支架,使其:</p>
<pre><code>us = input("Enter a subject: ") # If this is Python 2, use raw_input, not input
</code></pre>
<p>然后要确保您正在进行后缀检查(不仅仅是<code>ly</code>在字符串中的任何位置),请将:<code>if ly in a:</code>更改为<code>if a.endswith("ly"):</code>。你知道吗</p>