СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

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

Категория: Информатика

Нажмите, чтобы узнать подробности

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

Просмотр содержимого документа
«Уроки 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)


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