【发布时间】:2022-06-28 08:16:57
【问题描述】:
创建一个程序 palindrome.py,该程序具有一个函数,该函数接受一个字符串参数并打印一个句子,指示该文本是否为回文。该函数应仅考虑字符串中的字母数字字符,而不依赖于大小写、标点符号或空格。如果字符串是回文,它应该打印:It's a palindrome!但是,如果字符串不是回文,它应该打印:It's not a palindrome!
问题
当字符串中有空格时,我的代码不会打印它是否是回文,但会打印出它不是回文,尽管有空格。我在我的代码中包含了 replace()、zip() 和 reversed() 来解释空格和反转的单词,但它没有打印出想要的结果。
我的代码中遗漏了什么或做错了什么?
import sys
def palindrome(words):
if ' ' in words:
palindromes = words[::-1]
if palindromes == words:
return "It's a palindrome!"
return "It's not a palindrome!"
print(palindrome(sys.argv[1]))
示例测试用例
测试用例 1
tests 1 Run python3 palindrome.py 'Dennis, Nell, Edna, Leon, Nedra, Anita, Rolf, Nora, Alice, Carol, Leo, Jane, Reed, Dena, Dale, Basil, Rae, Penny, Lana, Dave, Denny, Lena, Ida, Bernadette, Ben, Ray, Lila, Nina, Jo, Ira, Mara, Sara, Mario, Jan, Ina, Lily, Arne, Bette, Dan, Reba, Diane, Lynn, Ed, Eva, Dana, Lynne, Pearl, Isabel, Ada, Ned, Dee, Rena, Joel, Lora, Cecil, Aaron, Flora, Tina, Arden, Noel, and Ellen sinned' and match its output to an expected value.
测试用例 2
test 2 Run python3 palindrome.py 'Ed, I saw Harpo Marx ram Oprah W. aside' and match its output to an expected value.
输出
预期输出:“这是回文!”
实际输出:“这不是回文!”
【问题讨论】:
-
为什么会有
if声明?这有点没有意义,它所做的只是让函数返回None,如果没有空格,你也不需要单独检查每个字符,只需检查反转的字符串是否相等 -
1)
palindrome=reversed(words)不属于 if 条件。如果单词没有空格,则不会定义您的变量回文。 2)为什么你遍历单词的字母?如果它是回文,您只需要比较单词和回文是否相等? (即使你这样做,我也不明白if len(words)==1应该做什么? -
要点是
sys.argv[1]采用第一个参数,所以如果你写的参数不带引号并且它包含一个空格,它将计为 2 个参数。请参阅我的答案的第一部分。
标签: python debugging palindrome