Академия Eduson

Множества. Методы. Часть 1

 Методы множеств

 Как можно добавить значение нового элемента item в уже существующее множество myset?

 Ответ: myset.add(item)

 Что может быть выведено в результате выполнения следующего кода?:

myset = {'Yellow', 'Orange', 'Black'}

myset.add('Blue')
myset.add('Orange')
print(myset)

 Ответ:  {'Blue', 'Orange', 'Yellow', 'Black'}

 Выберите все способы, позволяющие удалить только элемент Orange из множества myset:

myset = {'Yellow', 'Orange', 'Black'}

 Ответ: myset.discard('Orange');  myset.remove('Orange')

 В чем разница между методами множеств discard() и remove()?

 Ответ:  метод remove() вызывает исключение если элемент не найден в множестве

 Какая строка кода приведет к возникновению ошибки?:

my_set = {'a', 'b', 'c'}

my_set.discard('a')         # 1
my_set.discard('a')         # 2
my_set.remove('b')          # 3
my_set.remove('b')          # 4

 Ответ:  4

 Что будет выведено в результате выполнения следующего кода?:

myset = {'python'}

item = myset.pop()
print(item, len(myset))

 Ответ:  python 0

 Что может быть выведено в результате выполнения следующего кода?:

myset = set('python')

item = myset.pop()
print(item, len(myset))

 Ответ:  p 5

 Что будет выведено в результате выполнения следующего кода?:

myset = set()

item = myset.pop()
print(item)

 Ответ:  ошибка во время выполнения

 Что будет выведено в результате выполнения следующего кода?:

myset = set()
for i in range(10): if i % 2 == 0: myset.add('even') else: myset.add('odd')
print(len(myset))

 Ответ:  2

 Напишите программу для вывода количества уникальных символов каждого считанного слова без учета регистра.
 На вход программе в первой строке подается число n – общее количество слов. Далее идут n строк с словами.
 Программа должна вывести на отдельной строке количество уникальных символов для каждого слова.

l = []

for _ in range(int(input())):
    l.append(len(set(input().lower())))

print(*l, sep='\n')   

 Напишите программу для вывода общего количества уникальных символов во всех считанных словах без учета регистра.
 На вход программе в первой строке подается число n – общее количество слов. Далее идут n строк со словами.
 Программа должна вывести одно число – общее количество уникальных символов во всех словах без учета регистра.

n = [input() for _ in range(int(input()))]

l = []

for x in n:
    l += x.lower()

print(len(set(l)))    

 Напишите программу для определения общего количества различных слов в строке текста.

n = input().lower()

for x in n:
    if x in '.,:;-?!':
        n = n.replace(x, '')

print(len(set(n.split())))

 На вход программе подается строка текста, содержащая числа. Для каждого числа выведите слово YES (в отдельной строке), если это число ранее встречалось в последовательности или NO, если не встречалось.

n = [int(i) for i in input().split()]

s = set()

for x in n:
    if x not in s:
        print('NO')
        s.add(x)
    else:
        print('YES')

 У каждой задачи на «Stepik» есть виджет с процентом верных решений и общим количеством решений. В последнее время у «Stepik» барахлит алгоритм, обновляющий этот виджет. Помогите «Stepik» и напишите программу, которая будет подсчитывать, сколько учеников решили задачу и сколько верных попыток составляет от общего числа попыток.
 На вход вашей программе подается число n – общее число попыток решить задачу. Далее на вход подаются n строк, каждая в следующем формате: <никнейм>: <результат проверяющей системы> где <результат проверяющей системы> может принимать только два значения: Correct (задача решена верно) или Wrong (задача решена неверно).
 Ваша программа должна посчитать и вывести, сколько учащихся решили верно задачу и сколько верных попыток из всех в следующих форматах:

  • Верно решили <количество верно решивших учащихся> учащихся
  • Из всех попыток <процент верных решений>% верных

где <количество верно решивших учащихся> – количество уникальных учащихся, которые верно решили задачу.
 При этом если у задачи еще нет верных отправок решений, то программа должна вывести текст: Вы можете стать первым, кто решит эту задачу.

n = int(input())

m = set()
c_0 = 0
c_c = 0

for i in range(n):
    s = input().split(': ')
    c_0 = c_0 + 1
    if 'Correct' in s:
        m.add(str(s))
        c_c = c_c + 1        

if c_c == 0:
    print('Вы можете стать первым, кто решит эту задачу')
else:
    print('Верно решили', len(m), 'учащихся')
    print('Из всех попыток ', int(c_c / c_0 * 100 + 0.5), '%', ' верных', sep='')