Уроки Python 8 - Еще одна программа
компьютерная программа по информатике и икт

Кликодуев Владимир Валерьевич

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

 

Скачать:

ВложениеРазмер
Файл uroki_python_8.docx24.31 КБ

Предварительный просмотр:

Уроки 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 - Программа - экзаменатор...