РЕР8 для начала. Про нейминг уже сказали. Объединить два первых условия, реверснуть условие в цикле, вернуть None, во втором условном блоке elif не нужен + опять же код-стайл: не пишите тело на одной строчке с условным оператором. В идеале разбить на три функции: первая как диспетчер, две как обработчики разных событий по SRP. И прописывайте аннотации типов, изучив ПЕП для них - дисциплинирует.