【问题标题】:palindrome function in python, by the logic of teacherpython中的回文函数,由老师的逻辑
【发布时间】:2021-10-31 16:18:30
【问题描述】:

伙计们,我知道有类似的问题,但请帮助处理这段代码 - 我只能找到类似问题的代码,但遵循另一种逻辑,这对于学习我需要学习的内容没有用.. 有什么想要的: is_palindrome 函数检查字符串是否为回文。回文是一个字符串,可以从左到右或从右到左同等读取,省略空格,忽略大小写。回文的例子是像 kayak 和radar 这样的词,以及像“Never Odd or Even”这样的短语。如果传递的字符串是回文,则填写此函数中的空白以返回 True,否则返回 False。 这就是我想出的.. 工作但缺少一些东西

def is_palindrome(input_string):
    # We'll create two strings, to compare them
    new_string = "{input_split}".format(input_split = input_string.lower())
    reverse_string = "{input_split}".format(input_split = input_string.lower()[::-1])

    # Traverse through each letter of the input string
    for letter in new_string:
        # Add any non-blank letters to the 
        # end of one string, and to the front
        # of the other string. 
        if letter[0] in new_string != " ":
            new_string = "{letter}{new_string}".format(letter = letter[0],new_string = new_string[1:]) 
            reverse_string = "{letter}{reverse_string}".format(letter = letter[0],reverse_string = reverse_string[1:])
    # Compare the strings
    if new_string == reverse_string:
        return True
    return False

print(is_palindrome("Never Odd or Even")) # Should be True
print(is_palindrome("abc")) # Should be False
print(is_palindrome("kayak")) # Should be True

【问题讨论】:

  • 这似乎是一种不必要的复杂方式......
  • 您需要了解一下 in 关键字是什么以及如何使用它:stackoverflow.com/questions/19775692/…
  • “在这个函数中填空”:哪些空格?你填了什么?什么是模板代码?

标签: python palindrome


【解决方案1】:

你想多了。一旦你有了反转的字符串,你可以通过检查两个字符串是否相等来直接查看原始字符串是否是回文:

def is_palindrome(input_string):
    # We'll create two strings, to compare them
    simple_string = input_string.lower().replace(' ', '')
    reverse_string = simple_string[::-1]
    return simple_string == reverse_string

print(is_palindrome("Never Odd or Even")) # Should be True
print(is_palindrome("abc")) # Should be False
print(is_palindrome("kayak")) # Should be True

【讨论】:

    【解决方案2】:

    这可能会有所帮助

    def is_palindrome(a_string): 
        string_lower = a_string.lower()
        empty_string ="" 
        for char in string_lower:
            if char.isalpha():
                empty_string += char
        # print(empty_string)
        if empty_string == empty_string[::-1]:
            return True
        else:
            return False
            
    

    【讨论】:

      【解决方案3】:

      使用“split”函数并用空格分割 --> 然后加入所有分割字符串

      def is_palindrome(input_string):
          if input_string.lower() == "".join(input_string.split(' ')).lower()[::-1]:
              print("True")
          else:
              print("False")
      

      【讨论】:

      • strip 只删除字符串开头和结尾的空格,而不是单词之间的空格。
      • strip NOT 删除 all 空格,仅在末尾​​span>
      • 抱歉,我使用了错误的功能。感谢您的更正!
      【解决方案4】:

      好的,感谢您为我指明方向, 这就是我不喜欢这些案例研究的地方,它是以某种方式编写的,目的是教你获得了什么新方法,但它没有遵循任何逻辑,或者你将应用的逻辑,然后我搞砸了复杂的代码,甚至如果有可能在几行内完成。 对于未来,那个人可能会谷歌它。希望经过自己的一些努力..

      new_string = input_string.replace(" ", "").lower()
      reverse_string = input_string.replace(" ",""). lower()[::-1]
          if new_string == reverse_string:
              return True
          return False
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-20
        • 2019-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        • 2018-12-27
        相关资源
        最近更新 更多