Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
pythono
7 лет назад

Восьмой урок по Python // Пишем ещё одну программу




В этом уроке узнаем еще несколько строковых функций, изучим что такое словари,и напишем программу, считающую в тексте количество наиболее часто встречающихся слов.

Начнем с того, что такое словари. Это как бы списки, только в них есть две переменные - ключ и значение. По ключу можно получить значение. При создании словаря его сперва надо объявить. Чтобы объявить пустой словарь напишем

d={}

Чтобы добавить в словарь новый элемент нужно просто присвоить ему новую пару ключ и значение. Если такой ключ уже есть в словаре, значение перезапишется. Например, добавим в словарь ключ 'Ваня' и значение 'программист'

d={}
d['Ваня']='программист'
print(d['Ваня'])

Напечатает:

программист


Изучим новые команды для работы со строками:

Разбиваем строку на кусочки

s.split('разделитель')

разбивает строку s на кусочки, по разделителю, указанному в скобках. Разделителем может служить любая строка или символ, включая пробел. Данная команда даст нам список полученных кусочков.

Например, если есть строка в которой слова указаны через запятую, можно превратить эту строку в список, указав в качестве разделителя символ запятой ','.

s='Ваня,Таня,Даша'
m=s.split(',')
print(m)

Напечатает список

['Ваня', 'Таня', 'Даша']

То есть, из строки s мы получили список m, разделив строку по разделителю.

Разделителем может быть и пробел, и любой другой символ, или строка.

s='программирование образование psk блокчейн'
m=s.split(' ')
print(m)

Здесь внутри скобок у split указан пробел. Программа напечатает список:

['программирование', 'образование', 'psk', 'блокчейн']


Делаем все слова маленькими буквами

s=s.lower()

Эта команда сделает все буквы в строке маленькими(не заглавными). Данная функция нужна, когда вы хотите сравнивать какую то строку с другой, но пользователь может ввести её как с большой так и с маленькой буквы, поэтому прежде чем сравнивать, преобразуйте ввод пользователя в маленькие буквы.

s=input('Введите ваше имя')
s=s.lower()
if(s=='иван'):
    print('Привет насьальникэ!')


Считаем количество вхождений подстроки в строку

n=s.count('подстрока')

Например подсчитаем количество слов 'короче' в монологе крутого пацана.

s='короче, прикинь, я такой, короче ему бах, а он короче упал сразу'
n=s.count('короче')
print(n)

Напечатает

3


Удаляем лишние пробелы в начале и в конце строки

s=s.strip()

Иногда в конце строки пользователь может нечаянно написать пробел. Давайте удалим все пробелы в начале и в конце строки.

s=' В пустоте сокрыто Дао '
s=s.strip()
print(s)

Напечатает строку уже без пробелов вокруг неё:

В пустоте сокрыто Дао

Пишем программу, которая подсчитает каких слов больше всего во введённом тексте.

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

Составим алгоритм работы программы.

  1. Получим текст из буфера обмена командой s=pyperclip.paste()
  2. Чтобы посчитать количество вхождений каждого из слов с помощью s.count(), нужно искать во всем тексте каждое из слов. Поэтому вначале нужно получить список всех слов.
  3. Преобразуем все буквы текста в маленькие, чтобы не считать к примеру 'Слово' и 'слово' разными словами.
  4. Теперь нужно избавиться от всех знаков препинания в тексте, заменив их с помощью replace на пустую строку.
  5. После того как мы избавились от знаков препинания, разобьем текст на слова, по разделителю пробел, с помощью split(' '). Получим список mas всех слов в тексте.
  6. Теперь с помощью цикла for x in mas переберем список всех слов, и командой s.count(x) найдем количество вхождений каждого из слов. Это количество запишем в созданный словарь dic в котором ключом будет служить слово, а значением - количество его вхождений.

Отсортируем словарь по значению в обратном порядке, применив хитрый вариант команды sorted и в цикле напечатаем первые 5 элементов, в которых значение наибольшее. То есть пять слов которые наиболее часто встречаются в тексте.



Для сортировки словаря я использовал жуткую команду

dic=sorted(dic.items(),key=lambda x:x[1],reverse=True)

Просто используйте её, не обязательно пока вникать как она работает ))

Для тестирования я скопировал текст сказки про красную шапочку в буфер обмена, и запустил нашу программу. Она успешно определила наиболее употребляемые в тексте слова.


Как видим, программа получится довольно сложной. В ней мы используем почти все ранее изученные знания, поэтому если вам будет что-то непонятно в коде, перечитайте предыдущие уроки. Можете задавать вопросы в комментариях, и не забудьте подписаться на мой блог ))

17
9.057 GOLOS
На Golos с August 2017
Комментарии (6)
Сортировать по:
Сначала старые