Друзья, а вот и решение предыдущей задачи.



Ошибки в исходном коде:

1) неправильна указана правая граница в range(), вместо 12 следует указать 13,

2) неправильный оператор возведения в степень, вместо ^ следует использовать **,

3) неправильный оператор сравнения на равенство, вместо = следует указать ==.



Рефакторинг. Основной недостаток приведенного кода — глубокая вложенность. Избавиться от циклов нам поможет функция product() из модуля itertools. Функция product() генерирует все те же комбинации, что и вложенные циклы, но делает это в одной строке. Это делает код более простым для понимания и поддержки.



Один из принципов Python Zen гласит, что плоское лучше, чем вложенное. 🐍



Кстати, мы добавили некоторые принципы из Python Zen в наш стикерпак. Пользуйтесь. ❤️



P.S. Обратите внимание, что в Python ^ — это оператор xor (побитовое ИЛИ). Таким образом, программа будет работать даже с оператором ^, но выдавать будет не то, что требовалось. Про оператор ^ (xor) расскажем в будущих постах. 🙃



#рефакторинг #ответнавопрос #собеседование