Добавление и удаление из набора - PullRequest
0 голосов
/ 16 октября 2019

Добавление и удаление элементов в наборе. Я думаю, логика кажется правильной, но я не знаю, как заставить этот код работать. Я получаю сообщение об ошибке TypeError: unhashable type: 'list'

Вопрос состоит в следующем:

Ввод - это последовательность строк, где первая строка указывает, какие числа изначально указаны в наборе. Вторая строка указывает, какие номера удаляются из набора (если есть). Третья строка указывает, какие номера добавляются в набор (если его еще нет). Четвертая строка указывает, какие номера удалены, пятая - какие номера добавляются и т. Д. Процесс останавливается, когда введена строка

END

. Распечатать текущее содержимое набора в порядке возрастания.


s=set(input().split())
finished=False
while not finished:
    s1=input()
    if s1 != 'END':
        s2=input().split()
        s.remove(s2)
    else:
        finished=True
    if s2 !='END':
        s3=input().split()
        s.add(s3)
    else:
        finished=True
print(s)
input:
1 9 2 8 3 7 4 6
10 7 3
5 8 
1 9
END

output must be:
2 4 5 6 8

1 Ответ

0 голосов
/ 16 октября 2019

Я думаю, это то, что вы ищете

s=set(input().split())
finished=False
c = False                                       #Flag to check if it odd time or even time so we know to remove or add
while True:
    s1=input()                                  #Getting input from the user
    if s1 != 'END':
        if c:
            delete_values = s1.split()
            for deleting in delete_values:      #Loop to check the values we want to remove so we wont try to remove item that doesnt exist
                if deleting in s:
                    s.remove(deleting)
        else:
            s.add(*s1.split())                  #Adding all the values of the split using * unpacking
        c = not c
    else:                                       #Break the loop after end was inserted
        break
print(s)
...