как посчитать и распечатать все слова-палиндромы из файла

#python

#python

Вопрос:

Я пытаюсь проверить, являются ли слова файла палиндромами или нет, если да, то он должен напечатать эти слова и их общее количество. но когда я запускаю код, он не показывает результат. пожалуйста, помогите мне с этим.

 def findPalindrome(): 
    list3=list() 
    for line in open("English.txt"): 
        list1 = line.strip() 
        list2 = list1.split() 
    for x in list2: 
        if isPalindrome(x): 
        list3.append(x) 
     return list3 
  

он должен напечатать все слова палиндрома, которые находятся в текстовом файле, плюс их количество.

Комментарии:

1. Образец вашего текстового файла вместе с вашими усилиями?

2. «пожалуйста, помогите мне с этим». В чем помочь? Вы не показали свой код, так как же вы ожидаете, что мы вам поможем?

3. определение findPalindrome(): list3=list() для строки в open(«English.txt «): list1 = line.strip() list2 = list1.split() для x в list2: если используется палиндром(x): list3.append(x) возвращает list3

4. Образец вашего English.txt ?

5. Вы не показали нам isPalindrome() , что является сердцем всей программы. Как мы можем помочь, не видя этого? Вы также не показали нам код, который вызывает findPalindrome() и обрабатывает его результаты.

Ответ №1:

Вы почти закончили:

 from collections import Counter

def isPalindrome(s): 
    if (s == s[::-1] ): return True
    else: return False

def findPalindrome(): 
    list3=list() 
    for line in open("English.txt"): 
        list1 = line.strip() 
        list2 = list1.split() 
        for x in list2:
            if isPalindrome(x): 
                list3.append(x) 

    return list3 

palim_list = findPalindrome()
palim_counts = Counter(palim_list)
print palim_list
print palim_counts
  

Комментарии:

1. он показывает выходные данные. но с каждым выводом он показывает 1 почему? АААААА’: 1, ‘ABA’: 1, ‘acca’: 1, ‘ADA’: 1, ‘addda’: 1, ‘AEA’: 1, ‘AFA’: 1, ‘afa’: 1, ‘aga’: 1, ‘АГА’: 1, ‘AIA’: 1, ‘AJA’: 1, ‘AKA’: 1, ‘ALA’: 1, ‘alula’: 1, ‘ АМА’: 1,

2. Возможно, потому, что внутри каждого слова есть только одно вхождение «English.txt » файл?

Ответ №2:

Похоже, вы все усложняете, чтобы получить весь палиндром из файла в списке, вы могли бы просто перебрать его содержимое с разделенными пустыми строками и проверить, равна ли строка его инвертированному представлению:

someFile:

 kaak
okay
tired
alot
acca
  

Следовательно:

 res = []
with open('someFile.txt', 'r') as fObj:
    content = [l.strip() for l in fObj.readlines() if l.strip()]    
    for line in content:
        if line == line[::-1]:
            res.append(line)
print(res)
  

ВЫВОД:

 ['kaak', 'acca']
  

Комментарии:

1. Ребята, я прошу прощения за мои глупые ошибки. Я не очень хорошо знаком с кодированием.

2. @AJ Не извиняйтесь, мы все совершаем ошибки, а затем учимся на них, сообщество ожидает, что вы правильно покажете свои попытки, кристалл и полный фрагмент.

3. Почему у вас есть str() перенос line в if проверке? Они уже являются строками.

4. @Austin преимущества работы после напряженной езды. исправлено, спасибо!

5. Я помню, что ловил вас на аналогичной проблеме раньше. Похоже, что льготы по работе выполняются ежедневно. 😛