Напишите программу которая считает количество слов в символьной строке
Перейти к содержимому

Напишите программу которая считает количество слов в символьной строке

  • автор:

Подсчет строк, слов и символов в файле

Цикл 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

Количество слов в символьной строке

Напишите программу, которая считает количество слов в символьной строке. Словом называется последовательность символов, отличных от пробела, которая ограничена пробелами или границами строки.

Входные данные
Входная строка содержит произвольные печатаемые символы.

Выходные данные
Программа должна вывести одно число – количество слов в переданной её строке.

Примеры
входные данные
I live in Perm.
выходные данные
4

Лучшие ответы ( 4 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Напишите программу, которая считает количество знаков пунктуации в символьной строке
Напишите программу, которая считает количество знаков пунктуации в символьной строке. К знакам.

В заданной строке сосчитать количество слов. Разделителем слов считается один или несколько пробелов
В заданной строке сосчитать количество слов. Разделителем слов считается один или несколько.

Количество знаков пунктуации в символьной строке
Напишите программу, которая считает количество знаков пунктуации в символьной строке. К знакам.

Посчитать количество знаков пунктуации в символьной строке
Напишите программу, которая считает количество знаков пунктуации в символьной строке. К знакам.

290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532

Лучший ответ

Сообщение было отмечено rrll как решение

Решение

print(len(list(input().split())))

Регистрация: 25.04.2020
Сообщений: 17

Лучший ответ

Сообщение было отмечено rrll как решение

Решение

Добавлено через 2 минуты

print(len(input().split()))

Добавлено через 1 минуту

ЦитатаСообщение от Miryz Посмотреть сообщение

print(len(list(input().split())))

list()

необязательна, так как

split()

сам создаёт список
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532

Лучший ответ

Сообщение было отмечено rrll как решение

Решение

Если по всем сторкам из файла, то так:

f = open('TEXT.txt') for line in f: print(len(list(line.split())))

Добавлено через 1 минуту
JimMor, ага, молодец!
814 / 526 / 214
Регистрация: 22.12.2017
Сообщений: 1,495

Лучший ответ

Сообщение было отмечено rrll как решение

Решение

print(input().count(' ')+1)

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Количество слов в символьной строке
Добрый день уважаемые форумчане. Пожалуйста, помогите решить задачу на си Ввести символьную.

Определить количество слов в символьной строке
дан символьный файл f.Найти самое длинное слово среди слов,вторая буква которых есть Добавлено.

В каждой строке символьной матрицы определить количество слов
Дана символьная матрица, каждая строка которой является предложением. Для каждой строки определить.

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

В заданной символьной строке проверить одинаково ли количество слов с символами «*» и «#»
В заданной символьной строке проверить одинаково ли количество слов с символами "*" и "#". Вот.

Удаление слов в символьной строке
Помогите, пожалуйста найти ошибку в коде. Задача такова((TASM): Написать программу, которая в.

Посчитать количество слов в строке

Для ввода строки нельзя использовать функцию cin в данном случае, поскольку эта функция осуществляет ввод строки до пробела или перевода строки. Поэтому воспользуемся методом get функции cin :

cin.get(УказательНаСтроку, МаксимальноеЧислоСимволов);

Условием окончания строки является символ с кодом равным 0 (нуль-символ, ‘\0’ ). После ввода строки организуем цикл по элементам строки до ее окончания. Перед циклом убираем пробелы, введенные в начале строки (до первого слова). Условием определения следующего слова в строке является наличие какого-то символа после пробела. Именно это условие увеличивает счетчик count на 1.

Реализация на C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

Количество слов в строке

Результат выполнения

Подсчёт количества букв, цифр и специальных символов в введенной строке python

что значит это код и как подсчитать кол-во спецсимволов В данных строках:

print(len([i for i in stroke if i.isdigit()])) print(len([i for i in stroke if i.isalpha()])) 

Эта конструкция ( [i for i in stroke] ) называется генератор. В нем вы отбираете в список те символы, которые удовлетворяют условию, указанному в генераторе. Метод isdigit() проверяет состоит ли строка из цифр, а isalpha() проверяет состоит ли строка из букв. Далее вы печатаете длину списков. Подробнее вы можете ознакомиться здесь. Я бы вам не рекомендовал начинать с генераторов, если вы не знаете работу словарей, списков, строк и их методов. Вот, вариант, понятный и, впринципе, удобный для записи:

string = '"fddfs456"' d = for i in string: if i.isalpha(): d['Буквы'] += 1 elif i.isdigit(): d['Цифры'] += 1 else: d['Спец.символы'] += 1 print(d['Цифры'], d['Буквы'], d['Спец.символы']) 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *