Файл: Методическое пособие по теме Работа с множествами на языке Python.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 24
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Методическое пособие по теме: «Работа с множествами на языке Python»
Выполнила: учитель информатики и ИКТ
Потапова Е.Н.
ГБОУ Школа № 1552
Оглавление
Описание множеств 2
Создание множеств 2
Операции над множествами 3
Групповые операции над множествами 5
Сравнение множеств 5
Примеры решения задач с использование множеств 5
Задача A. Пунктуация 6
Задача B. Все различные цифры 6
Задача C. Повторяющиеся цифры 7
Задача D. Правильное восьмеричное число 7
Задача G. Удалить повторы 8
1.Онлайн курс «Основы программирования на Python» Густокашин М. С. 9
Данный материал будет полезен учителям информатики, работающих в профильных классах, а также школьникам, желающим повысить свой уровень изучения языка Python.
Описание множеств
Множество в python - "контейнер", содержащий не повторяющиеся элементы в случайном порядке
В множество можно добавлять и удалять объекты, проверять принадлежность объекта множества и перебирать все объекты множества.
Также над множествами можно совершать групповые операции, например, пересекать и объединять два множества.
В отличие от массивов, где элементы хранятся в виде последовательного списка, в множествах порядок хранения элементов неопределен (более того, элементы множества хранятся не подряд, как в списке, а при помощи хитрых алгоритмов). Это позволяет выполнять операции типа “проверить принадлежность элемента множеству” быстрее, чем просто перебирая все элементы множества.
Создание множеств
Множество в теле программы может быть создано с помощью записи элементов через запятую в фигурных скобках:
B = {3, 1, 2}
Исключением является пустое множество, которое можно создать при помощи функции set(). Если функции set передать в качестве параметра список, строку или кортеж, то она вернёт множество, составленное из элементов списка, строки, кортежа.
A = set('python')
выведет {'p', 'y', 't', 'h', 'o', 'n'}.
Упорядоченность является чистой случайностью.
Если при задании множества присутствовало несколько одинаковых элементов, то они попадут в множество в единственном экземпляре:
A = set('Hello')
выведет {'H', 'e', 'l', 'o'}.
Узнать число элементов в множестве можно при помощи функции len.
N=len(A)
print(N)
Программа выведет 4
Операции над множествами
Из множества можно сделать список или кортеж с помощью функций list и tuple соответственно.
A = set('Hello')
B=list(A)
C=tuple(A)
print(A)
print(B)
print(C)
Программа выведет
{'H', 'e', 'l', 'o'} # множество
['H', 'e', 'l', 'o'] # список
('H', 'e', 'l', 'o') # кортеж
Для добавления элемента в множество есть метод add:
A = {1, 2, 3}
A.add(4)
print(A)
Программа выведет
{1, 2, 3, 4}
Для удаления элемента x из множества можно использовать метод discard. В случае, когда удаляемый элемент отсутствует в множестве метод discard не делает ничего.
A = {1, 2, 3}
A.discard(2)
print(A)
Программа выведет
{1, 3}
Полная очистка
Иногда необходимо полностью убрать все элементы. Чтобы не удалять каждый элемент отдельно, используется метод clear, не принимающий аргументов. Если вывести содержимое после этой операции, на экране появится только его название.
А = {0, 1, 2, 3}
А.clear()
print(А)
Программа выведет
set()
В результате получили пустое множество.
Перебрать все элементы множества (в неопределенном порядке!) можно при помощи цикла for:
А = {2, 3, 5, 7, 11}
for dit in А:
print(dit)
Проверить, принадлежит ли элемент множеству можно при помощи операции in, возвращающей значение типа bool. Аналогично есть противоположная операция not in
A = {1, 2, 3}
print(1 in A, 4 not in A)
Программа выведет
True True
Групповые операции над множествами
В Питоне можно работать не только с отдельными элементами множеств, но и с множествами в целом. Например, для множеств определены следующие операции:
A = {1, 2, 3} B = {4, 2, 5} | ||
Операция | Описание | Результат |
A | B | Объединение множеств {1, 2, 3, 4, 5} | {1, 2, 3, 4, 5} |
A & B | Пересечение множеств | {2} |
A - B | Множество, элементы которого входят в A, но не входят в B | {1, 3} |
A ^ B | Элементы входят в A | B, но не входят в A & B | {1, 3, 4, 5} |
В результате этих операций создается новое множество, однако для них определена и сокращенная запись: |=, &=, -= и ^=. Такие операции изменяют множество, находящееся слева от знака операции.
Сравнение множеств
A = {1, 2, 3} B = {4, 2, 5} | |
Операция | Описание |
A == B | Все элементы совпадают |
A != B | Есть различные элементы |
A <= B | Все элементы A входят в B |
Также определены операции > и >=. Все групповые операции и сравнения проводятся над множествами за время, пропорциональное количеству элементов в множествах.
Примеры решения задач с использование множеств
Примеры решения задач с использование множеств задачи из учебника К.Ю. Полякова и Е.А. Еремина (Информатика 10-11 классы. Углублённый уровень. М.: БИНОМ, 2013)
https://informatics.mccme.ru/mod/statements/view.php?id=11544#1
Задача A. Пунктуация
Напишите программу, которая считает знаки пунктуации в символьной строке. К знакам пунктуации относятся символы из набора ".,;:!?".
Входные данные
Программа получает на вход символьную строку.
Выходные данные
Программа должна вывести общее количество знаков пунктуации во входной строке.
Примеры
входные данные
Hi, guys!
выходные данные
2
Решение
a = set('.,;:!?')
st=input()
k=0
for x in st:
if x in a: k+=1
print(k)
Задача B. Все различные цифры
Напишите программу, которая находит все различные цифры в символьной строке.
Входные данные
На вход программе подаётся символьная строка.
Выходные данные
Программа должна вывести в одной строке все различные цифры, которые встречаются в исходной строке, в порядке возрастания. Если в строке нет цифр, нужно вывести слово 'NO'.
Примеры
входные данные
ab1n32kz2
выходные данные
123
входные данные
asdasd
выходные данные
NO
Решение
a = set()
st=input()
for x in st:
if '0'<=x<='9' and x not in a: a.add(x)
if len(a)>0:
b=sorted(list(a))
print(*b,sep='')
else : print('NO')
Задача C. Повторяющиеся цифры
Напишите программу, которая выводит все цифры, встречающиеся в символьной строке больше одного раза.
Входные данные
Входная строка может содержать содержит цифры, пробелы и латинские буквы.
Выходные данные
Программа должна вывести в одну строчку в порядке возрастания все цифры, встречающиеся во входной строке больше одного раза. Если таких цифр нет, нужно вывести слово 'NO'.
Примеры
входные данные
asd12gh23
выходные данные
2
входные данные
t1y2u3i4o5
выходные данные
NO
Решение
a = set()
st=input()
b=set()
for x in st:
if '0'<=x<='9' and x not in a: a.add(x)
elif x in a:
b.add(x)
if len(b)>0:
b=sorted(list(b))
print(*b,sep='')
else: print('NO')
Задача D. Правильное восьмеричное число
Напишите программу, которая определяет правильность записи целого числа в восьмеричной системе счисления.
Входные данные
На вход программы поступает символьная строка.
Выходные данные
Программа должна вывести ответ 'YES', если строка представляет собой правильную запись целого числа в восьмеричной системе счисления, и 'NO', если запись ошибочна.
Примеры
входные данные
12345
выходные данные
YES
входные данные
1a234
выходные данные
NO
Решение
a = {'0','1','2','3','4','5','6','7'}
b=input()
if set(b)<=a and b[0]!='0':
print('YES')
else: print('NO')
Задача G. Удалить повторы
Напишите программу, которая удаляет из строки все повторяющиеся символы.
Входные данные
На вход программы подаётся строка, содержащая символы таблицы ASCII.
Выходные данные
Программа должна вывести исходную строку
, из которой удалены все повторяющиеся символы.
Примеры
входные данные
abc13a1b2z3c
выходные данные
abc132z
входные данные
QWasd123
выходные данные
QWasd123
Решение
a = input()
b=set()
s=''
for x in a:
if x not in b:
b.add(x)
s+=x
print(s)
Используемая литература:
-
Онлайн курс «Основы программирования на Python» Густокашин М. С.
-
https://python-scripts.com/sets