Уроки 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 1 - Переменные и их типы
Уроки Python 1 - Переменные и их типы...
Уроки Python 2 - Условный оператор if-else
Уроки Python 2 - Условный оператор if-else...
Уроки Python 3 - Сложные условия
Уроки Python 3 - Сложные условия...
Уроки Python 4 - Списки и циклы
Уроки Python 4 - Списки и циклы...
Уроки Python 5 - "Первая программа"
Уроки Python 5 - Первая программа...
Уроки Python 6 - Работа со строками
Уроки Python 6 - Работа со строками...
Уроки Python 10 - Программа - экзаменатор
Уроки Python 10 - Программа - экзаменатор...