<p>您错误地解释了python中的<code>or</code>运算符。请参阅以下代码:</p>
<pre><code>answer = page.answer.text()
# validate submitted answer...
answerlength = (len(answer))-1
if answer[0] == ' ' or answer[answerlength] == ' ':
QtGui.QMessageBox.warning(
self, 'Error', 'Please remove the space/s before (or after) your answer!')
</code></pre>
<p>事实上,代码的计算结果为<code>True</code>at <code>if answer[0]</code>,除非该位置为空,如果有<em>任何</em>字符(包括空格),则该位置不为空。由于<code>or</code>的性质,其余的将永远不会得到评估</p>
<p>您还可以使用负切片表示法从末尾对字符串进行切片:</p>
<pre><code>if answer[0] == " " or answer[-1] == " ":
</code></pre>
<p>或者使用<a href="https://docs.python.org/2/library/stdtypes.html#str.startswith" rel="nofollow">^{<cd5>}</a>和<a href="https://docs.python.org/2/library/stdtypes.html#str.endswith" rel="nofollow">^{<cd6>}</a></p>
<pre><code>if answer.startswith(" ") or answer.endswith(" ")
</code></pre>
<p>下面是一个示例,它检查结束和开始都不包含任何空格</em>字符,使用<a href="https://docs.python.org/2/library/string.html#string.whitespace" rel="nofollow">^{<cd7>}</a>,注意您可以将<code>tuples</code>传递给<code>str.startswith()</code>和<code>str.endswith()</code></p>
<pre><code>import string
answer = page.answer.text():
ws = tuple(string.whitespace)
if answer.startswith(ws) or answer.endswith(ws):
QtGui.QMessageBox.warning(
self, 'Error', 'Please remove the space/s before (or after) your answer!')
</code></pre>