Cześć,
to co mi się rzuciło w oczy, to sposób w jaki usuwasz elementy z listy.
Wyrażenie lista.remove(<element listy> and <element listy> ) nie sprawia, że zostaną usunięte dwa elementy, tylko jeden element.
Operator and zwróci Ci tylko jeden element stojący po lewej lub po prawej stronie tego wyrażenia, w zależności jakie wartości logiczne przyjmują obiekty stojące po lewej i po prawej stronie,
Przykładowo w Pythonie pusty ciąg znaków -> "" przyjmuje zawsze wartość False, pusta lista przyjmuje wartość False, 0 przyjmuje wartość False. Także po użyciu tego operatora dostajesz w zwrocie drugi element gdy oba elementy są prawdziwe (True) lub ten, który przyjmuje wartość fałszu.
Także jak chcesz usunąć dwa elementy z listy to musisz dwa razy użyć funkcji remove.
Pozdrawiam,
Nelson