回文是一个向前和向后读取相同的字符串.回文的例子包括"lol","abba","雷达"和"pickle elkcip".指示它是否在以下文档字符串中描述的所有情况下都有效:'''如果字符串s是回文,则返回True,否则返回False.'''
def palindrome2(s):
n = len(s)
pal = True
for i in range(n/2):
if s[i] == s[n-i-1]:
pal = True
else:
pal = False
return pal
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这个功能不起作用.对我来说,似乎功能正常.显然,布尔值被滥用,但我不明白上面的布尔值是如何使用得不好的.有人可以向我解释一下吗?
为了好玩,你也可以尝试更简单:
def palindrome(s):
return s[::-1] == s
Run Code Online (Sandbox Code Playgroud)
(让读者了解它是如何工作的)
方式的循环体是编码的值pal可改变之间True和False在一对给定的字符是否发生特定迭代期间以匹配或不反复取决于.
最好检查不等式,然后立即将布尔变量设置pal为False并退出循环.
像这样的东西:
def palindrome2(s):
n = len(s)
pal = True
for i in range(n/2)
if s[i] != s[n-i-1]: # the moment it's false
pal = False # set pal and
break # drop out of the loop
return pal
Run Code Online (Sandbox Code Playgroud)
或者,不使用布尔变量:
...
for i in range(n/2)
if s[i] != s[n-i-1]: # the moment it's false
return False # exit the function by returning False
return True # otherwise return True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |