#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. Я помню, что ловил вас на аналогичной проблеме раньше. Похоже, что льготы по работе выполняются ежедневно. 😛