Сокращение кода python?

Задался вопросом как сократить такой код:
if '*'==j:
    if o*t==h:print('YES')
    else:print('NO')
  elif '/'==j:
    try:
      if o/t==h:print('YES')
      else:print('NO')
    except:print('NO')
  elif '-'==j:
    if o-t==h:print('YES')
    else:print('NO')
  elif '+'==j: 
    if o+t==h:print('YES') 
    else:print('NO')
  else:0/0

Вроде операции одинаковые меняется только знак, но код выходит довольно объёмным, подскажите, пожалуйста, как его сократить
  • Вопрос задан
  • 1816 просмотров
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Ну наглядней точно можно сделать:
try:
    if {
        '+': lambda o, t, h: o + t == h,
        '-': lambda o, t, h: o - t == h,
        '*': lambda o, t, h: o * t == h,
        '/': lambda o, t, h: o / t == h,
      }.get(j)(o, t, h):
        print('YES')
    else:
        print('NO')
except KeyError:
    print('Неизвестная функция')
except ZeroDivisionError:
    print('Деление на ноль')
Ответ написан
Комментировать
@anerev
try:
  if j in ['*', '/', '-', '+']:
      d = eval(f'o{j}t')
      print('YES' if d==h else 'NO')
  else:0/0
except:print('NO')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@erik_mikoyan
Самопровозглашенный программист
Через библиотеку operator. Составить словарь с операторами, и тогда можно сократить весь код до 2-х условии. (Учитывая возможность деления на ноль, до 2- условии и 1 try/except)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы