猿问

python 字符串列表中有多少回文

我正在尝试输入一个单词序列并计算序列中有多少回文或非回文(唯一单词),但不知道我做错了什么。我的循环不计算列表的元素,而是计算我相信的整个列表。


user_input = input('Enter word sequence:')


string = user_input.split()


temp = [i[::-1] for i in string]


unique = 0

is_palindrome = 0


for i in temp:


   if i in temp == string:

      is_palindrome += 1


   else:

       unique += 1


print('There are', is_palindrome, 'Palindromes, and', unique, 'unique words')

如果有人可以帮助我,我将不胜感激。


翻阅古今
浏览 121回答 2
2回答

慕后森

您拆分输入并反转每个单词。到目前为止,您的实现非常好,但在下面,您的实现是错误的。for i in temp:   if i in temp == string:      is_palindrome += 1您正在使用 temp ,但这行代码if i in temp == string不是正确的实现,因为您正在比较if i in temp哪个返回布尔值和string哪个是列表。您需要比较temp列表的索引和string列表的索引是否匹配。如果它们匹配,它们是回文。您可以按如下方式实施。for i in range(len(temp)):    if temp[i] == string[i]:        palindrome += 1    else:        unique += 1

LEATH

由于阅读单词似乎不是问题的核心,让我们跳过这一步并明确声明一个单词列表,然后计算与倒数一致的单词数:my_words = [ 'abccba', '101101', 'joy', 'bar', 'john', 'anna' ]print( [ word == word[::-1] for word in my_words ].count(True) )
随时随地看视频慕课网APP

相关分类

Python
我要回答