Уроки Python 8 - Еще одна программа

Уроки Python 8 - Еще одна программа

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

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, и прежде чем запускать нашу программу, скопируйте с любого документа какой-нибудь текст для его анализа. Составим алгоритм работы программы. Получим текст из буфера обмена командой s=pyperclip.paste() Чтобы посчитать количество вхождений каждого из слов с помощью s.count(), нужно искать во всем тексте каждое из слов. Поэтому вначале нужно получить список всех слов. Преобразуем все буквы текста в маленькие, чтобы не считать к примеру 'Слово' и 'слово' разными словами. Теперь нужно избавиться от всех знаков препинания в тексте, заменив их с помощью replace на пустую строку. После того как мы избавились от знаков препинания, разобьем текст на слова, по разделителю пробел, с помощью split(' '). Получим список mas всех слов в тексте. Теперь с помощью цикла for x in mas переберем список всех слов, и командой s.count(x) найдем количество вхождений каждого из слов. Это количество запишем в созданный словарь dic в котором ключом будет служить слово, а значением - количество его вхождений. Отсортируем словарь по значению в обратном порядке, применив хитрый вариант команды sorted и в цикле напечатаем первые 5 элементов, в которых значение наибольшее. То есть пять слов которые наиболее часто встречаются в тексте.
import pyperclip
s=pyperclip.paste()
s=s.lower()
s=s.replace('.','')
s=s.replace(',','')
s=s.replace('!','')
s=s.replace(':','')
s=s.replace(';','')
s=s.replace('?','')
mas=s.split(' ')
dic={}
for x in mas:
    if(len(x)>3):
        k=s.count(x)
        dic[x]=k
dic=sorted(dic.items(),key=lambda x:x[1],reverse=True)

q=1
for z in dic:
    if (q > 5): break
    q =  q + 1
    print(str(z))
Для сортировки словаря я использовал жуткую команду
dic=sorted(dic.items(),key=lambda x:x[1],reverse=True)
Просто используйте её, не обязательно пока вникать как она работает )) Для тестирования я скопировал текст сказки про бабу ягу в буфер обмена, и запустил нашу программу. Она успешно определила наиболее употребляемые в тексте слова. ('была', 2) ('баба', 2) ('била', 2) ('мачеха', 2) ('сестре', 2) Как видим, программа получится довольно сложной. В ней мы используем почти все ранее изученные знания, поэтому если вам будет что-то непонятно в коде, перечитайте предыдущие уроки.

Уроки Python | Считаем количество наиболее частых слов Лого Pythono.ru Уроки Python 8 - Еще одна программа