No Image

Как посчитать количество букв в слове python

СОДЕРЖАНИЕ
17 просмотров
05 мая 2020

Программа считает количество строк, слов и букв в переданном ей файле.

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

Пример выполнения скрипта в командной оболочке bash

Вводится строка, состоящая из слов, разделенных пробелами. Требуется посчитать количество слов в ней.

  1. Введем счетчик слов и переменную-флаг, сигнализирующую, находимся ли мы внутри слова или нет.
  2. Если очередной символ не пробел, и флаг показывает, что мы не внутри слова, то следует увеличить переменную-счетчик слов и изменить флаг.
  3. Иначе если текущий символ пробел, то установить флаг в значение "вне слова". (Когда символ не пробел, и мы находимся внутри слова, то ничего делать не надо.)

main ( ) <
char str [ 255 ] ;
int i , count , flag ;
gets ( str ) ;
count = 0 ;
flag = 0 ;
for ( i = 0 ; str [ i ] != ‘ ‘ ; i ++ )
if ( str [ i ] != ‘ ‘ && flag == 0 ) <
count += 1 ;
flag = 1 ;
> else
if ( str [ i ] == ‘ ‘ ) flag = 0 ;
printf ( "%d
" , count ) ;
>

# 1-й вариант ("классический"):

s = input ( )
count = 0
flag = 0
for i in range ( len ( s ) ) :
if s [ i ] != ‘ ‘ and flag == 0 :
count + = 1
flag = 1
else :
if s [ i ] == ‘ ‘ :
flag = 0
print ( count )

# 2-й вариант (через преобразование в список):

s = input ( )
s = s. split ( )
l = len ( s )
print ( l )

Метод split() разбивает строку по пробелам (по умолчанию) или символам, которые передаются как аргументы. Возвращает список.

Ниже приведенный скрипт на Python подсчитывает частоту слов в тексте (непрерывных последовательностей букв за исключением знаков препинания) и выводит таблицу результатов.

Работает правильно. Вопрос вот в чем: можно ли сделать то же самое проще (например, меньше строк кода) на Python, Bash, PHP, Perl или это лучший способ?

Читайте также:  Виниловые обои палитра отзывы

7 Answers

Скрипт на bash/awk, для коллекции:

Подсчёт частоты слов с поддержкой Unicode ( .casefold() , w+ ):

  • текст, в кодировке из локали, задаётся из файлов, указанных в командной строке, или со стандартного ввода (если не указаны)
  • слова выводятся в порядке убывания популярности
  • кодировка для вывода может отличаться от кодировки на входе
  • выводит построчно, с указанным в вопросе форматированием (ширина под слово — 32 символа)

Вот версия, близкая к поведению Питон 2 кода из вопроса:

  • читает байты из файла, переводит их в нижний регистр, разбивает на слова по стандартному пробелу (не поддерживает Unicode)
  • удаляет ascii пунктуацию из каждого слова (может пустая строка остаться)
  • считает получившиеся слова, сортирует их по величине байт
  • выводит построчно, с указанным в вопросе форматированием (ширина под слово — 32 байта)

Два примера разный вывод генерируют как правило.

Комментировать
17 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock
detector