Я хочу посчитать количество палиндромов в текстовом файле, используя Python. но эта программа, которую я написал, дает мне 0 вместо 2 - PullRequest
0 голосов
/ 09 сентября 2018

Я хочу посчитать количество палиндромов в текстовом файле, используя python. но эта программа, которую я написал, дает мне 0 вместо 2 Текстовый файл:

Tattarrattat was coined by writer James Joyce in a book called Ulysses.
Aibohphobia is a joke term used to describe the fear of palindromes.

Программа:

filename = "palindrome_test.txt"
x=0
#initiation
with open('palindrome_test.txt','r') as text:
    for line in text: #for loop
        line = line.split() #to split the line into words
        for i in range(0,100):
            if line[i] == line[i][::-1]: 
                x +=1 #increment

print(x)

1 Ответ

0 голосов
/ 09 сентября 2018

У вас есть две ошибки в вашем коде. Во-первых, количество слов в строке, как правило, не 100. Во-вторых, заглавная буква не равна соответствующей строчной букве. Вот исправленная версия вашей программы:

count = 0 # x is never a good name
with open('palindrome_test.txt','r') as text:
    for line in text: 
        words = line.lower().split() #split the lowercased line into words
        for w in words:
            if w == w[::-1]: 
                count += 1 #increment

Обратите внимание, что слово «а» также является палиндромом (это встречается дважды в вашем тексте).

Вы можете заменить цикл for на понимание списка, чтобы получить более привлекательную программу:

count = 0
with open('palindrome_test.txt','r') as text:
    for line in text: 
        words = line.lower().split() #split the lowercased line into words
        count += sum(w == w[::-1] for w in words)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...