Подсчет строк, слов и символов в файле
Цикл for языка Python извлекает из файлового объекта данные построчно (одну строку на каждой итерации цикла). Таким образом, количество итераций цикла определит количество строк в файле.
Встроенная функция len() языка Python считает количество элементов в передаваемой в нее объекте. С ее помощью находится количество символов в каждой строке.
Строковый метод split() разбивает строку на части. По-умолчанию разделение происходит по местам расположения пробелов в строке. Таким образом, мы можем определить количество слов в каждой строке, посчитав с помощью len() слова в получившемся после применения split() списке.
На каждой итерации цикла мы должны добавлять полученные значения к переменным, хранящим общие количества строк, слов и символов.
file = open('text.txt') lines = 0 words = 0 symbols = 0 for line in file: lines += 1 words += len(line.split()) symbols += len(line) print("Lines:", lines) print("Words:", words) print("Symbols:", symbols)
Пусть содержимое файла text.txt будет таким:
one two three city town big small
Тогда программа даст следующий результат:
Lines: 3 Words: 7 Symbols: 34
Cимволами считаются не только буквы, также пробелы и переходы на новую строку (символ ‘\n’ ). Если требуется не учитывать переход на новую строку как символ, его можно «отрезать» с помощью строкового метода strip() . Делается это перед тем, как строка передается в функцию len() : symbols += len(line.strip(‘\n’)) .
Если данную задачу надо решить без использования продвинутых возможностей (встроенных функций и методов) языка программирования Python, а в рамках изучения алгоритмов или на более «низком» уровне, то программа может выглядеть так:
file = open('text.txt') text = file.read() lines = 0 words = 0 symbols = 0 in_word = False for char in text: symbols += 1 if char == '\n': lines += 1 if char != ' ' and char != '\n' and in_word == False: words += 1 in_word = True elif char == ' ' or char == '\n': in_word = False print("Lines:", lines) print("Words:", words) print("Symbols:", symbols)
Здесь на каждой итерации цикла мы имеем дело не с целой строкой, а с очередным символом. При этом увеличиваем на единицу переменную, хранящую количество символов, и, если текущий символ — это переход на новую строку, переменную для подсчета количества строк.
Для подсчета слов требуется определить в программе еще одну переменную, в которой будет храниться «сигнал», находимся ли мы внутри слова. Если это так, то очередной непробельный символ не следует считать началом нового слова и не надо увеличивать счетчик слов.
Алгоритм подсчета слов в программе выше следующий. Если текущий символ не пробел И не переход на новую строку, И ранее мы находились вне слова ( in_word == False ), то есть соблюдены все три условия сразу, значит началось новое слово. Поэтому увеличиваем счетчик слов и устанавливаем in_word в значение True . Последнее действие позволит на следующей итерации цикла, при условии обработки второй и послеющих букв слова, не соблюдаться условию in_word == False и не увеличивать счетчик слов.
Мы «сбрасываем» in_word в False , только когда встречаем пробельный символ ИЛИ переход на новую строку (любое одно из двух условий).
Программа выше, также как в первом варианте, считает переход на новую строку за символ. Если требуется его исключить, можно поместить увеличение значения счетчика символов в ветку else :
. for char in text: if char == '\n': lines += 1 else: symbols += 1 .
Если очередной символ — это переход на новую строку, увеличивается счетчик строк. В остальных случаях, — счетчик символов.
Если файл большой, то считывать сразу все его содержимое в строковую переменную ( text = file.read() ) неблагоразумно. Если читать файл посимвольно ( file.read(1) ), то условием завершения работы цикла будет момент возрата методом read() пустой строки, что означает конец файла (в других языках может быть специальный символ конца файла, доступный через идентификатор EOF — end of file).
lines = 0 words = 0 symbols = 0 in_word = False with open('text.txt') as file: while True: char = file.read(1) if char == '': break symbols += 1 if char == '\n': lines += 1 if char not in (' ', '\n') and not in_word: words += 1 in_word = True elif char in (' ', '\n'): in_word = False print("Lines:", lines) print("Words:", words) print("Symbols:", symbols)
В этом примере для открытия файла используется оператор with , который рекомендован для работы с файлами. Выражения char not in (‘ ‘, ‘\n’) and not in_word и char in (‘ ‘, ‘\n’) по смыслу аналогичны соответствующим логическим выражениям из предыдущих вариантов программы.
X Скрыть Наверх
Решение задач на Python
Подсчитать количество пробелов в каждой из строк
4. Заданы М строк слов, которые вводятся с клавиатуры. Подсчитать количество пробелов в каждой из строк.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Заданы M строк, которые вводятся с клавиатуры. Подсчитать количество пробелов в каждой из строк
Заданы M строк, которые вводятся с клавиатуры. Подсчитать количество пробелов в каждой из строк.
Строка: Подсчитать количество пробелов в каждой из строк.
Заданы M строк, которые вводятся с клавиатуры. Подсчитать количество пробелов в каждой из строк.
Подсчитать количество каждой из букв и пробелов в файле
необходимо подсчитать кол-во каждой из букв и пробелов в файле, не могу понять, что не так.
Подсчитать количество строк, начинающихся с одного или нескольких пробелов
Есть задача: В тексте из 30 строк по 66 знаков подсчитать количество строк, начинающихся с одного.
Регистрация: 21.12.2020
Сообщений: 53
Регистрация: 01.02.2020
Сообщений: 21
oguzok, держи:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
M = int(input('Введите положительное число: ')) while M 0: M = int(input('Введите положительное число: ')) empt = list() k = 0 while k != M: a = input('Введите строчку: ') empt.append(a.count(' ')) k += 1 k = 1 for elem in empt: print('В строке: ' + str(k) + ', количество пробелов: ' + str(elem)) k += 1
P.S: добавил проверку числа M на всякий случай
Регистрация: 29.03.2015
Сообщений: 94
oguzok,
для тех, кто учится:
1 2 3 4 5 6 7 8 9 10 11 12
''' Заданы М строк слов, которые вводятся с клавиатуры. Подсчитать количество пробелов в каждой из строк. ''' M = int (input ('Сколько строк: ')) for i in range (M) : T = input ('Введите ' + str (i + 1) + ' строку: ') # K - число пробелов K = T.count (' ') print ('В', i + 1, 'строке', K, 'проб.')
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Подсчитать количество всех строк, а потом — количество слов в каждой строке
Программа считает количество строк в файле add.txt выводит на экран и записывает в новый указанный.
Подсчитать количество строк в каждой группировке
Добрый вечер. Есть такая таблица: myTable (catId, Name) 1 | qwerty 1 | blablabla 3 | wwwww 4.
Подсчитать количество гласных букв в каждой из заданных строк
Заданы М строк слов, которые вводятся с клавиатуры. Подсчитать ко-личество гласных букв в каждой из.
Подсчитать количество гласных букв в каждой из заданных строк
5. Заданы М строк слов, которые вводятся с клавиатуры. Подсчитать количество гласных букв в каждой.
Подсчитать количество гласных букв в каждой из заданных строк
Условие: Заданы М строк слов, которые вводятся с клавиатуры. Подсчитать количество гласных букв в.
Списки: подсчитать количество гласных букв в каждой из заданных строк
Заданы M строк слов, которые вводятся с клавиатуры. Подсчитать количество гласных букв в каждой.
Python-сообщество
- Начало
- » Центр помощи
- » Распределите пробелы
#1 Апрель 14, 2021 02:41:09
eiktyrnir Зарегистрирован: 2021-04-14 Сообщения: 4 Репутация: 0 Профиль Отправить e-mail
Распределите пробелы
Распределите пробелы
Дана строка, содержащая по крайней мере один не ведущий пробел, за которым следует отличный от пробела символ. За счет изменения групп пробелов внутри строк (количества пробелов между словами) добиться того, чтобы в начале и в конце каждой из строк пробелы отсутствовали. Количество пробелов в разных группах внутри одной строки должно различаться не более чем на единицу. Количество символов в строке должно остаться неизменным.
На вход программе подается строка, состоящая не более чем из 255 символов.
Выведите преобразованную строку. Если количество пробелов между словами отличается, то сначала должны идти группы пробелов минимального размера, а затем — на единицу большего размера.
Примеры
Ввод
ABCD XYZ QWE
Вывод
ABCD XYZ QWE
Мой вариант решения
k = input() n = 0 while k[n] == ' ': k = k[1:] while k[len(k)-1] == ' ': k = k[:-1] n = 1 while n len(k)-1: if k[n] == ' ' and k[n+1] == ' ': k = k[:n+1] + k[n+2:] else: n += 1 print(k)
в компиляторе даёт верный результат, но упорный проверщик блокирует решение выдавая «Программа выдаёт неверный ответ«
#2 Апрель 14, 2021 22:01:00
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9596 Репутация: 836 Профиль Отправить e-mail
Распределите пробелы
Сначала нужно выбрать все пробелы. Потом надо посчитать количество промежутков между словами. Потом надо разделить количество пробелов на количество промежутков. И только потом можно заполнять промежутки между словами заново известным количеством пробелов.
Думаю, основная твоя проблема — это стремление к коротким кодам из-за страха обосраться прилюдно. Есть такое у многих новичков на начальных этапах. Но это именно то ограничение, которое и не даёт тебе развиваться. Надо сначала написать полный код любого размера, а потом уменьшать его. Так ты и придёшь к маленьким кодам, но которые работают. Полные коды ты будешь в голове писать, потом в голове будешь уменьшать их, а потом уже записывать их уменьшенными. А если наоборот будешь делать, изображая из себя профессионала, то ты будешь получать “Программа выдаёт неверный ответ” всегда и никогда ничему не научишься. В результате ты обосрёшься именно в виде неработающих программ, что гораздо заметнее и играет более важную роль в промышленной разработке. То, что ты полный ноль с короткими кодами, заметят очень быстро и постараются от тебя избавиться, так как ты никакой пользы не приносишь, а место занимаешь.
Отредактировано py.user.next (Апрель 14, 2021 22:05:15)
Количество пробелов в строке
Напишите функцию space_game(text), которая симулирует следующую игру: если количество пробелов в строке в переменной text является четным, то печатается: «Вы выиграли», в противном случае выводится сообщение с текстом: «Вы проиграли».
Пример 1
Ввод
space_game(‘я иду с мечем судия’)
Вывод
Вы выиграли
Пример 2
Ввод
space_game(‘Привет’)
Вывод
Вы выиграли
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
В заданной строке сосчитать количество слов. Разделителем слов считается один или несколько пробелов
В заданной строке сосчитать количество слов. Разделителем слов считается один или несколько.
Если количество пробелов в строке в переменной text является четным, то печатается: «Вы выиграли»
Напишите функцию space_game(text), которая симулирует следующую игру: если количество пробелов в.
Как записать, чтобы не в отдельной строке задавались цифры и знаки, а шли в одной строке друг за другом без пробелов?
Привет всем! Я заочник (не программист специализация) дали задание по Python: "Программа.
Определите функцию, которая считает количество букв в строке без учёта пробелов
Определите функцию count_letters(sentence, average), которая считает количество букв в строке без.
1354 / 651 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
Айрат_Муртазин, лови:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
def sp(b): print(b) b=b.split() l=len(b) print(l) if l%2==0: print("Выиграли") else: print("проиграли") if __name__ == '__main__': b=str(input()) sp(b)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Подсчет двойных пробелов в строке
Каким образом можно посчитать в строке количество именно двойных пробелов, а не тройных, или.
В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
Посчитать количество пробелов и количество цифр в строке
• Дана строка S посчитать количество пробелов и количество цифр.
Вывести количество пробелов и количество букв в строке
Помогите с выполнением лабораторной работы. Необходи изменить программу что бы она получала на ввод.
Количество пробелов в строке
Здравствуйте. Помогите с задачей. Нужно написать программу на классы и объекты. Пользователь вводит.
Количество пробелов в строке
Дано строка. Нужно написать программу, которая определяет количество пробелов в этой строке.