Счётчик строк 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 проход по строке, сравниваешь текущий символ и предыдущий, используя состояния.

→ Ссылка
Автор решения: splash58

можно воспользоваться декоратором для подсчета числа вызовов 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, например, и использовать ее для специальных данных.

→ Ссылка