Вопрос Как оптимизировать ветвление в Python?

ナン イNan Y.
Участник
Статус
Оффлайн
Регистрация
14 Апр 2018
Сообщения
1,159
Реакции[?]
166
Поинты[?]
0
День добрый. Товарищ предложил написать обыкновенный калькулятор с 4 возможными операциями для целых чисел с использованием наименьшего количества строк.
Я набросал простенький код в 12 строк:

Python:
print('Консольный калькулятор')
a, b = map(int, input('Введите 2 числа через пробел: ').split())
print('Выберите действие: \n1. Сложение \n2. Вычитание \n3. Умножение \n4. Деление')
c = int(input())
if c == 1:
    print('Результат: ', a + b)
if c == 2:
    print('Результат: ', a - b)
if c == 3:
    print('Результат: ', a * b)
if c == 4:
    print('Результат: ', a // b)
Меня интересует возможность оптимизировать 5-12 строки в 1. Возможно ли это? Если да, то каким образом?
 
Начинающий
Статус
Оффлайн
Регистрация
20 Май 2019
Сообщения
23
Реакции[?]
14
Поинты[?]
0
День добрый. Товарищ предложил написать обыкновенный калькулятор с 4 возможными операциями для целых чисел с использованием наименьшего количества строк.
Я набросал простенький код в 12 строк:

Python:
print('Консольный калькулятор')
a, b = map(int, input('Введите 2 числа через пробел: ').split())
print('Выберите действие: \n1. Сложение \n2. Вычитание \n3. Умножение \n4. Деление')
c = int(input())
if c == 1:
    print('Результат: ', a + b)
if c == 2:
    print('Результат: ', a - b)
if c == 3:
    print('Результат: ', a * b)
if c == 4:
    print('Результат: ', a // b)
Меня интересует возможность оптимизировать 5-12 строки в 1. Возможно ли это? Если да, то каким образом?
Посмотри
Пожалуйста, авторизуйтесь для просмотра ссылки.
, не в 1 строку, но по идее хорошо сократит.
 
ナン イNan Y.
Участник
Статус
Оффлайн
Регистрация
14 Апр 2018
Сообщения
1,159
Реакции[?]
166
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
13 Янв 2021
Сообщения
30
Реакции[?]
5
Поинты[?]
0
Если придерживаться заданной логики кода то как то так
Python:
    print('Консольный калькулятор')
    a, b = map(int, input('Введите 2 числа через пробел: ').split())
    print('Выберите действие: \n1. Сложение \n2. Вычитание \n3. Умножение \n4. Деление')
    c = int(input())
    mat = (None, a + b, a - b, a * b, a // b)
    if c in (1, 2, 3, 4): print('Результат:', mat[c])
Можно ещё сократить
Python:
 if c in (1, 2, 3, 4): print('Результат:', (None, a + b, a - b, a * b, a // b)[c])
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
13 Янв 2021
Сообщения
30
Реакции[?]
5
Поинты[?]
0
С любым количеством входных цифр
Python:
from functools import reduce
print('Консольный калькулятор')
num = input('Введите числа через пробел: ')
print('Выберите действие: \n1. Сложение \n2. Вычитание \n3. Умножение \n4. Деление')
c = int(input())
if c in (1, 2, 3, 4): print(reduce(lambda a, b: eval(f"a {(None, '+', '-', '*', '//')[c]} b"), map(int, num.split())))
 
Сверху Снизу