这是一个程序,它接受一串单词并检查这些单词是否为回文,如果是单词,则会打印出来。但是如果一个字符串中有空格,我的程序将不会将其视为回文(例如:护士运行)。我应该添加什么来使程序排除空间,当它考虑到回文?
回文:一个单词,短语或序列,向前和向后读取相同的词,例如'女士'或'护士跑'
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)
答案 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(" ","")