Выполнить подсчёт всех символов "а" в файле
F = open('file.txt', 'r')
kolvo = 0
for i in F:
if 'a' in i:
kolvo =+1
if kolvo > 1:
print('Количество элементов в файле :', kolvo)
elif kolvo == 0:
print('Элементов в файле нет')
В данном коде требуется прочитать все строки файла и выполнить подсчёт всех символов "а" в файле. Но у меня в любом случае программа выдаёт "Элементов в файле нет". Помогите исправить. Заранее спасибо!
Ответы (3 шт):
Открывать файлы лучше с помощью контекстного менеджера with, это гарантия того, что файл будет закрыт после выполнения действий.
В питоне есть оператор += и нет оператора =+.
Когда вы пишете x =+1, вы на самом деле пишете x = 1. Поскольку у вас неправильно написано условие, у вас не срабатывает ни один блок. Потому что у вас в условии kolvo > 1, но у вас оно не > 1, а просто 1. Нужно было делать условие больше или равно. kolvo >= 1.
Но т.к. 0 - это falsy-объект, а все что больше 0 - это truthy объект, то можно вообще не писать эти сравнения, а написать так, как в моем примере.
count = 0
with open('file.txt', 'r') as f:
for row in f:
if 'a' in row:
count += 1
if count:
print(f'Количество элементов в файле: {count}')
else:
print('Элементов в файле нет')
Если вы хотите посчитать не количество строк с вашей буковой, а именно количество символа в файле, то это еще проще:
with open('file.txt', 'r') as f:
count = f.read().count('a')
if count:
print(f'Количество элементов в файле: {count}')
else:
print('Элементов в файле нет')
Выражение: kolvo =+ 1, вот корень зла. Нужно писать +=.
Нет острой необходимости писать:
if kolvo > 1:
print('Количество элементов в файле :', kolvo)
elif kolvo == 0:
print('Элементов в файле нет')
Можно просто написать:
print('Количество элементов в файле :', kolvo)
Залезу и я со своим вариантом:
kolvo = open('file.txt').read().count('a')
if kolvo:
print(f'Количество элементов в файле: {kolvo}')
else:
print('Элементов в файле нет')