我正在尝试输入一个单词序列并计算序列中有多少回文或非回文(唯一单词),但不知道我做错了什么。我的循环不计算列表的元素,而是计算我相信的整个列表。user_input = input('Enter word sequence:')string = user_input.split()temp = [i[::-1] for i in string]unique = 0is_palindrome = 0for i in temp: if i in temp == string: is_palindrome += 1 else: unique += 1print('There are', is_palindrome, 'Palindromes, and', unique, 'unique words')如果有人可以帮助我,我将不胜感激。
2 回答
慕后森
TA贡献1802条经验 获得超5个赞
您拆分输入并反转每个单词。到目前为止,您的实现非常好,但在下面,您的实现是错误的。
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
TA贡献1936条经验 获得超6个赞
由于阅读单词似乎不是问题的核心,让我们跳过这一步并明确声明一个单词列表,然后计算与倒数一致的单词数:
my_words = [ 'abccba', '101101', 'joy', 'bar', 'john', 'anna' ]
print( [ word == word[::-1] for word in my_words ].count(True) )
添加回答
举报
0/150
提交
取消