回文计划中的会计空间

时间:2017-09-23 21:12:12

标签: python python-3.x debugging

这是一个程序,它接受一串单词并检查这些单词是否为回文,如果是单词,则会打印出来。但是如果一个字符串中有空格,我的程序将不会将其视为回文(例如:护士运行)。我应该添加什么来使程序排除空间,当它考虑到回文?

回文:一个单词,短语或序列,向前和向后读取相同的词,例如'女士'或'护士跑'

import sys

strings = []
for s in sys.argv[1:]:
    strings += [s]

def is_palindrome(word):
    if len(word) <= 2 and word[0] == word[-1]:
        return True
    elif word[0] == word[-1]:
        is_palindrome(word[1:-1])
        return True
    else:
        return False


def printpalindromes(strings):
    for s in strings:
        if is_palindrome(s) == True:
            print(s)

printpalindromes(strings)

4 个答案:

答案 0 :(得分:1)

在进行回文检查之前尝试剥离空白

>>> x = "nurses run"
>>> x.replace(" ", "")
'nursesrun'

答案 1 :(得分:1)

您可以使用reversed

`r capture.output(print(biblio["my-bibkey"]))`

答案 2 :(得分:0)

您的代码在elif语句中仍然不正确。如前所述,当你真正从递归调用中返回响应时,你已经添加了return True

def is_palindrome(word):
    if len(word) <= 2 and word[0] == word[-1]:
        return True
    elif word[0] == word[-1]:
        return is_palindrome(word[1:-1])
    else:
        return False

答案 3 :(得分:0)

以下是您问题的简单解决方案:

import sys

sys.argv = ["    nurses         ", "       run       "]
word = "".join([s.strip() for s in sys.argv])
print("{} {} palindrome".format(word, "is" if word == word[::-1] else "is not"))

或者你可以像这样用sys.argv创建单词:

word = "".join(sys.argv).replace(" ","")