我正在尝试输入一个单词序列,并计算该序列中有多少个回文或非回文(唯一的单词),但不能告诉我我在做什么错。我的循环不是在计算列表的元素,而是在计算我认为的整个列表。
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')
如果有人可以帮助我,我将不胜感激。
答案 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) )