Счётчик строк Python
Как сделать счётчик который будет считать строки которые ввводятся на Pythone. Пример: Есть программа которая выводит в терминал различные слова Привет Дом Книга Дерево Плита
Получается 5 слов, как сделать программу которая будет считать количество этих слов?
Ответы (2 шт):
Есть простой вариант, если ты вводишь только 1 строку и в ней передаешь слова:
def count_words(string: str) -> int:
s = string.strip(' ').replace(' ', ' ')
if not s:
return 0
return s.count(' ') + 1
Как правило, это редкий кейс, чаще требуется получить список слов(всегда можно узнать его длину)
def count_words(string: str) -> int:
return string.strip(' ').replace(' ', ' ').split()
Если нужно прочитать с потока ввода и посчитать все слова, то можно сделать так:
file test.py:
import sys
count = 0
for line in sys.stdin:
count += count_words(line)
shell:
echo first second test | python3 test.py
Стоит добавить, что с точки зрения алгоритмов count_words не оптимальная функция, это просто быстрое решение на python. Если делать оптимально, то потребуется всего 1 проход по строке, сравниваешь текущий символ и предыдущий, используя состояния.
можно воспользоваться декоратором для подсчета числа вызовов print. Правда, он подсчитает все вызовы, независимо от содержания.
def call_counter(func):
def _(x):
_.calls += 1
return func(x)
_.calls = 0
return _
print = call_counter(print)
for i in range(10):
print('')
print(print.calls) # 10
Или можно назвать декорированную функцию другим именем, myprint, например, и использовать ее для специальных данных.