【问题标题】: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。这就是它被翻转的原因。

    【讨论】:

      猜你喜欢
      • 2019-03-18
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 2012-03-30
      相关资源
      最近更新 更多