【问题标题】:Why my code palindrome works only for single input not for many inputs?为什么我的代码回文仅适用于单个输入而不适用于多个输入?
【发布时间】:2022-11-04 11:28:25
【问题描述】:

回文是向前和向后阅读时相同的单词或短语。例如:“bob”、“sees”或“never odd or even”(忽略空格)。编写一个程序,其输入是一个单词或短语,并输出输入是否是回文。

我只说对了一半。我的代码适用于鲍勃,并且看到了。 当输入“从不奇数或偶数”时,我的代码不起作用,它显示不是回文,但应该是回文。

我在这里做错了什么?

word = str(input())
new = word.replace(" ", "")
new = new[::-1]

if word == new:
    print('{} is a palindrome'.format(word))
else:
    print('{} is not a palindrome'.format(word))

【问题讨论】:

  • 可能是因为您没有替换 word 中的空格
  • word 仍然包含空格。
  • new = new[::-1] 更改为reversed = new[::-1],然后将if word == new: 更改为if reversed == new:

标签: python palindrome


【解决方案1】:

您将wordnew 进行比较,但要生成new,您已删除所有空格。

【讨论】:

    【解决方案2】:

    那是因为new = word.replace(" ", "") 行 - word 保留了其中的空格。您应该制作一个不带空格的word 版本,将其反转,然后将其与不带空格的word 进行比较。

    就像是:

      word = str(input())
      spaceless_word = word.replace(" ", "")
      new = spaceless_word[::-1]
    
      if spaceless_word == new:
          print('{} is a palindrome'.format(word))
      else:
          print('{} is not a palindrome'.format(word))
    

    【讨论】:

    • 这样可行!我知道我在哪里做错了
    • 很高兴这对您有所帮助!
    【解决方案3】:

    尝试这个

    word = str(input())
    word = word.replace(" ", "")
    new = word
    new = new[::-1]
    
    if word == new:
        print('{} is a palindrome'.format(word))
    else:
        print('{} is not a palindrome'.format(word))
    

    【讨论】:

      【解决方案4】:

      我的回答,有点难看,但我一直在添加东西,直到它是正确的。

      inputs=str(input())
      inputs_nospace=inputs.replace(' ', '')
      inputs_reversed=inputs_nospace
      inputs_reversed=inputs_reversed[::-1]
      if inputs_reversed==inputs_nospace:
          print (inputs, 'is a palindrome')
      else:
          print(inputs, 'is not a palindrome')
      

      【讨论】:

        猜你喜欢
        • 2018-10-30
        • 2019-11-15
        • 2021-09-17
        • 1970-01-01
        • 2016-12-30
        • 1970-01-01
        • 2021-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多