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

时间:2019-10-14 21:37:11

标签: 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')

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

2 个答案:

答案 0 :(得分:1)

您拆分了输入并反转了每个单词。到目前为止,您的实施情况非常好,但是下面的实施是错误的。

for i in temp:

   if i in temp == string:
      is_palindrome += 1

您正在经历临时工作,但是这段代码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

答案 1 :(得分:0)

由于阅读单词似乎不是问题的核心,因此让我们跳过此步骤,明确声明单词列表,然后计算与倒数一致的单词数量:

my_words = [ 'abccba', '101101', 'joy', 'bar', 'john', 'anna' ]
print( [ word == word[::-1] for word in my_words ].count(True) )