Одна первая ошибка (я сомневаюсь, что она блокирует вас):
if int(test[0]) is not len(test[1:]):
Никогда не правильно использовать is
/ is not
для проверки неизменяемых (например, чисел): используйте вместо этого =
или !=
. Код, который вы написали, может случайно работать как основанный на реализации артефакт в версиях Python, которые «кэшируют» маленькие целые числа, но это все равно неправильно ;-). Аналогично для len(cars) is 0
позже.
Использование переменной с именем error
для указания на отсутствие ошибки является своеобразным и запутанным (хотя технически это не неправильный код; -).
Алгоритмическая ошибка: все, что вы проверяете, так это то, что каждая машина нравится только одному сановнику. Это очень отличается от «присваивания высокопоставленных лиц 1-1 автомобилей, удовлетворяющих предпочтениям». Например, если всем сановникам понравились все машины, вы бы сказали «Нет» (поскольку вы удаляете все машины на первом участке цикла, затем получаете ValueError во второй раз и, таким образом, устанавливаете error
в False
), пока Очевидно, ответ должен быть «Да»! Итак, переосмыслите алгоритм с нуля. Подумайте об использовании наборов или диктовок, они могут облегчить вашу жизнь (они не изменят алгоритм, но могут упростить понимание / концептуализацию).