Инженерный калькулятор · Шаг 4 из 10
Число или скобки
Самая нижняя ступень — то, из чего состоит всё остальное: число или целое выражение в скобках. Скобки возвращают разбор на самый верх: внутри них снова можно всё — сложение, умножение, степень, другие скобки.
Что сделать
Разберите самое простое, из чего строится выражение: число или целое выражение в скобках.
Что приходит
tokeny— список токеновi— с какого токена начатьvyrazhenie— функция самой верхней ступени:vyrazhenie(tokeny, i)возвращает(значение, номер следующего токена)
Что вернуть
Пару (значение, номер следующего токена); не хватает «)», нет числа или выражение оборвалось — ValueError с текстом.
Допишите функцию v_skobkah в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Калькулятор ставит v_skobkah в самый низ цепочки. Решите шаг — и заработают скобки любой глубины: «2 * (3 + (4 − 1))».
В проверке выражение — игрушка chislo, один токен-число. ["(", 7, ")"] разбирается так: скобка, внутри выражение 7, закрывающая скобка — ответ (7, 3).
Список кончился (i за его концом) — ValueError("выражение оборвалось").
Токен "(" — разобрать vyrazhenie с токена после скобки. Следом обязан стоять ")"; нет его или список кончился — ValueError("не хватает закрывающей скобки"). Вернуть значение и номер токена после ")".
Токен — число (int или float) — вернуть его и номер следующего.
Любой другой токен — ValueError(f"ожидалось число, а стоит «{токен}»").
Образцовый тест целиком
chislo = lambda t, i: (t[i], i + 1)
v_skobkah(["(", 7, ")"], 0, chislo)
(7, 3)
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.