擅长:python、mysql、java
<p>你有一些问题。这里的主要问题是<code>else</code>子句在循环中有一个<code>return True</code>。您要做的是在返回<code>True</code>之前完成对字符串的迭代。如果您熟悉布尔逻辑,这相当于用<code>AND</code>短路。你知道吗</p>
<p>另一个问题(不是真正的问题,更多的是吹毛求疵)是您可以只使用整数除法<code>//</code>,而不必导入<code>math</code>的<code>floor</code>函数。你知道吗</p>
<p>所以</p>
<pre><code>def isPalindrome(string):
for i in range(0, len(string) // 2):
if string[i] != string[-(i + 1)]:
return False
return True
</code></pre>
<p>另一种处理方法是使用<code>all</code>:</p>
<pre><code>def isPalindrome(string):
return all(x == y for x, y in zip(string, reversed(string)))
</code></pre>
<p>或者,利用python方便的切片表示法实现最简洁的解决方案,我们有:</p>
<pre><code>def isPalindrome(string):
return string == string[::-1]
</code></pre>