【问题标题】:Check for palindrome检查回文
【发布时间】:2019-07-24 13:24:09
【问题描述】:
这是一道考试题。假设我们有一个函数 def palindrome (s),我们称之为。如果它是回文,则该函数应返回 True。
def palindrome(s):
...
palindrome("radar")
为了检查它是否是回文,我尝试反转字符串以查看它是否相同。我用s.find(s[::-1])。
考试的备选方案是:
return bool(s.find(s[::-1]))
return not(bool(s.find(s[::-1]
我不明白这两种选择之间的区别,谁能解释一下?
【问题讨论】:
标签:
python
boolean
palindrome
【解决方案1】:
相等运算符 '==' 返回 True 或 False
def palindrome(s):
reverse_str = s[::-1]
return s == reverse_str
palindrome("radar")
是的
find() 方法查找指定值的第一个匹配项,如果未找到该值,则返回 -1。
def palindrome(s):
reverse_str = s[::-1]
return s.find(reverse_str)
palindrome("radar")
0
【解决方案2】:
解决方案 #1
return bool(s.find(s[::-1]))
这与您的解决方案相同。唯一的区别是它被强制转换为布尔类型。
bool() 方法使用以下方法将值转换为布尔值(True 或 False)
标准真值测试程序。
解决方案 #2
return not(bool(s.find(s[::-1]))
与之前的解决方案相同,但结果被翻转。为什么要翻转?找到时结果为0,未找到时结果为-1。这导致 False (0) 和 True(-1)。所以奇怪的是,当找到它时它给出了 False,而当没有找到它时它给出了 True。这就是它被翻转的原因。