Войти Создать аккаунт

Инженерный калькулятор · Шаг 2 из 10

Один уровень приоритета

«2 + 3 * 4» — это 14, а не 20: умножение сильнее сложения. Хитрость в том, что сложение и умножение разбираются одним и тем же способом: взять кусок, и пока дальше стоит «свой» знак — взять ещё кусок и соединить. Разница только в том, что считать куском. Для сложения кусок — целое произведение, для умножения — одно число.

Что сделать

Разберите одну ступень приоритета: кусок, а пока дальше стоит свой знак — ещё кусок и соединить слева направо.

Что приходит

  • tokeny — список токенов

  • i — с какого токена начать

  • nizhe — функция ступени ниже: nizhe(tokeny, i) возвращает (значение, номер следующего токена)

  • deystviya — словарь «знак → функция двух чисел», например {"+": operator.add, "-": operator.sub}

Что вернуть

Пару (значение, номер первого токена после разобранного).

Допишите функцию uroven в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В проекте

Калькулятор зовёт uroven дважды: сложение и вычитание — над произведениями, умножение и деление — над тем, что сильнее. Из этого вложения и получается, что «2 + 3 * 4» — 14.

Пример

В проверке ступень ниже — игрушечная: chislo берёт ровно один токен-число. Тогда [2, "+", 3, "-", 1] — это (2 + 3) − 1, ответ (4, 5): значение 4, и разобраны все пять токенов.

Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.