Множества клавиатуры считываются строки текста Ввод текста завершается

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 2. Множества:
# С клавиатуры считываются строки текста. Ввод текста завершается по пустой строке.
# Вывести на экран
# - уникальные символы для каждой строки отдельно
# - уникальные символы текста
# - символы, которые встречаются во всех строках
# - символы, которые есть в первой строке, но не встречаются в остальных
# - неповторяющиеся символы отдельных пар четных и нечетных строк (1 и 2, 3 и 4, 5 и 6 и т.д.)
while True:
print ('>>> ')
input_str = ' ' # строка
cont_list = [] # список строк, которые ввёл пользователь
temp_set = set() # множество из одной строки
global_set = set() # множество всего текста
char_in_all = set() # множество символов, которые есть во всех строках
char_in_first = set() # множество символов первой строки, которые уникальны во всех строчках
char_in_pairs = set() # множество неповторяющихся символов парных строк
char_in_pairs_list = [] # список множеств неповторяющихся символов парных строк
while input_str <> '': # цикл работает до тех пор, пока не введут пустую строку
input_str = raw_input()
temp_set = set(input_str)
cont_list.append(temp_set)
cont_list.pop() # так как последняя строка -- пустая, нам нужно выкинуть из списка лишнее множество
if len(cont_list) > 0:
char_in_all = cont_list[0].copy() # копия первого множества в списке строк
char_in_first = cont_list[0].copy()
print '1. Unique code for each row: '
for temp in range(0,len(cont_list)): # temp - множество в списке всех строк
global_set.update(cont_list[temp]) # функция update добавляет все новые символы из cont_list[temp] в global_set
if temp <> 0:
char_in_first -= cont_list[temp] # разница множеств
char_in_all.intersection_update(cont_list[temp]) # во множестве char_in_all останутся все элементы, которые существуют и там, и в cont_list[temp] (функция intersection_update)
if (temp+1) % 2 == 0:
char_in_pairs = cont_list[temp-1] ^ cont_list[temp] # во множестве char_in_pairs будут все элементы множеств cont_list[temp-1] и cont_list[temp], исключая одинаковые
char_in_pairs_list.append(char_in_pairs)
print cont_list[temp]
print '\n2. Unique code for all text: ', global_set
print '\n3. Symbols that are found in all lines: ', char_in_all
print '\n4. Characters that are in the first line, but not found in other: ',char_in_first
print '\n5. Recurring characters separate pairs of lines: ', char_in_pairs_list