Найти в Дзене
От Джуна до Лида (IT Jobs)

Задача с ветвлением, но без If и try except

Условия задачи: У нас есть цепочка символов. Нужно получить сумму. Например: sum (5)() Получаем 5 sum (10)(7)() Получаем 17 sum (10)(7)(-7)() Получаем 10 Ветвление с помощью IF Замена IF на try except Напомним условие задачи У нас есть цепочка символов. Нужно получить сумму. Например: sum (5)() Получаем 5 sum (10)(7)() Получаем 17 sum (10)(7)(-7)() Получаем 10 Мы предложили такой способ решения Понятно, что вышеперечисленные способы - первое, что приходит на ум, когда просят решить подобную задачу. Но давайте попробуем сломать себе мозг и реализуем ветвление другим способом. Задание остается прежним: разделить 2 ветки логики. Нельзя использовать IF, try except. Давайте реализуем столь необычное задание с помощью словарей. Для начала слегка модернизируем код самой первой версии решения. Мы сохраняли конечный результат в nonlocal переменной result. Есть более красивый вариант сохранения конечного результата: сохраняем результат конечных вычислений в атрибут объекта new. Функция в Pytho
Оглавление

Условия задачи:

У нас есть цепочка символов. Нужно получить сумму.

Например:

sum (5)()

Получаем 5

sum (10)(7)()

Получаем 17

sum (10)(7)(-7)()

Получаем 10

-2

Ветвление с помощью IF

-3

Замена IF на try except

Напомним условие задачи

У нас есть цепочка символов. Нужно получить сумму.

Например:

sum (5)()

Получаем 5

sum (10)(7)()

Получаем 17

sum (10)(7)(-7)()

Получаем 10

-4

Мы предложили такой способ решения

-5

Понятно, что вышеперечисленные способы - первое, что приходит на ум, когда просят решить подобную задачу. Но давайте попробуем сломать себе мозг и реализуем ветвление другим способом.

Задание остается прежним: разделить 2 ветки логики.

  1. Number2 is None
  2. Number2 - какое-то число (имеет тип Integer)

Нельзя использовать IF, try except.

Давайте реализуем столь необычное задание с помощью словарей.

Для начала слегка модернизируем код самой первой версии решения.

-6

Мы сохраняли конечный результат в nonlocal переменной result. Есть более красивый вариант сохранения конечного результата: сохраняем результат конечных вычислений в атрибут объекта new.

Функция в Python является объектом. Мы можем добавлять в нее атрибуты.

Поэтому в функцию new добавляем атрибут result, в котором будем сохранять результат.

Заход издалека нужен был, чтобы на более простом примере понять, как еще можно сохранять конечные расчеты. Теперь приступим к решению:

-7

Как видно, используется 3 вложенных функции, код становится тяжелым для восприятия. Давайте разбираться подробнее.

-8

Делим ветки логики с помощью словаря под названием ber_if. Если тип переданного значения None, то просто вернется значение new. result (для этого используем простенькую однострочную lambda функцию), а если какое-то число (то есть integer), то вернется функция wtf (кок еще моно назвать 3-ю вложенную функцию в не сложной задаче?).

Функция wtf выглядит так:

-9

Увеличивается атрибут result, где хранится конечный результат и возвращается функция new.

Дальше нам нужно будет опять вызвать словарь, ведь переданных чисел может быть много.

-10

Мы вызываем словарь bez_if, только от типа number2.

Мы решили задачу на разделение логики с помощью словарей. Конечно, на реальном проекте никто не будет делать такое. Было полезно поломать голову над казалось бы простой задачей. Всегда интересно открывать что-то новое и нестандартное.

Подписывайтесь на наш telegram канал где вы сможете найти актуальные вакансии для Python разработчиков любого уровня

#it #python #задача #программирование