Откройте контекст
Выберите папку проекта и обозначьте нужные файлы или поведение.
Вычислите плоскую последовательность булевых значений с AND и OR, отдавая приоритет AND. Проверьте True OR False AND False и отклоняйте пустой вход, неверное положение операторов, скобки и небулевы операнды без исполнения строк.
Выберите папку проекта и обозначьте нужные файлы или поведение.
Укажите входные данные, ожидаемый результат и границы, которые нужно сохранить.
Проверьте предлагаемые изменения и команды, прежде чем полагаться на результат.
Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
def evaluate_flat(tokens):
if not tokens or len(tokens) % 2 == 0:
raise ValueError("logic.shape")
if any(type(x) is not bool for x in tokens[::2]):
raise ValueError("logic.value")
if any(x not in ("AND", "OR") for x in tokens[1::2]):
raise ValueError("logic.operator")
terms, term = [], tokens[0]
for i in range(1, len(tokens), 2):
if tokens[i] == "AND":
term = term and tokens[i + 1]
else:
terms.append(term)
term = tokens[i + 1]
return any([*terms, term])Пример — отправная точка для реального проекта, а не утверждение, что сгенерированный код уже протестирован. Адаптируйте пути, зависимости и ожидаемое поведение к своему приложению.