Инженерный калькулятор · Шаг 6 из 10
Всё выражение целиком
Ступени разбирают, сколько смогли, и останавливаются на непонятном. В «2 3» верхняя ступень разберёт «2» и честно вернёт номер токена «3» — она не знает, что дальше ничего быть не должно. Это знает только тот, кто разбирает строку целиком.
Что сделать
Посчитайте выражение целиком: разрежьте на токены, разберите с начала и убедитесь, что не осталось лишнего.
Что приходит
stroka— выражение, как его набралиrazbit— функция «строка → список токенов», ваш шаг 1vyrazhenie— функция верхней ступени:vyrazhenie(tokeny, i)возвращает(значение, номер следующего токена)
Что вернуть
Значение выражения; пустое выражение или лишний токен в конце — ValueError с текстом.
Допишите функцию celikom в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Это вход в разбор: калькулятор зовёт celikom на каждое «=» и показывает ответ или ваш текст ошибки.
В проверке токены режет str.split, а выражение — игрушка chislo, которая берёт одно число. "42" — один токен, разобран целиком, ответ 42. А "4 2" — ошибка: после 4 остался лишний токен.
Разрезать строку через razbit. Токенов нет — ValueError("пусто — нечего считать").
Разобрать vyrazhenie с нулевого токена. Если разобрано не всё — остался токен под возвращённым номером: если это ")" — ValueError("лишняя закрывающая скобка"), иначе ValueError(f"непонятно, что делать с «{токен}»").
Всё разобрано — вернуть значение.
Образцовый тест целиком
chislo = lambda t, i: (int(t[i]), i + 1)
celikom("42", str.split, chislo)
42
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.