В этом семестре я изучаю вводный курс по Python в этом семестре (с использованием 3.4) и недавно наткнулся на упражнение о приоритете оператора и с помощью круглых скобок, чтобы сделать утверждение оценено как true.Оценка операторов сравнения в Python, которые ведут себя неожиданно
Точный вопрос:
Add a single pair of parentheses to the expression so that it evaluates to true.
1 < -1 == 3 > 4
Я предположил, что правильный ответ был бы:
1 < -1 == (3 > 4)
Учитывая, что операторы сравнения все на том же уровне приоритета, они должны оценить из слева направо, поэтому он должен оцениваться как таковой:
1 < -1 == (3 > 4)
1 < -1 == False
False == False
True
Но когда я говорю n код все еще возвращает false. Я видел этот вопрос comparison operators' priority in Python vs C/C++, и результат этого выражения имеет смысл для меня; но в этом случае я заставил оценить последнее утверждение перед оценкой остальной части выражения, поэтому я не понимаю, почему я все еще получаю неправильный ответ.
Я смотрел на него в течение прошедшего часа, и мне кажется, что я мог бы пропустить что-то очевидное; если кто-то мог бы дать некоторое представление о том, какое правильное решение может быть, это было бы весьма полезно.
Вы понимаете часть этого ответа о сравнении * chaining *? В этом ответе объясняется, как последовательности операторов сравнения не работают в соответствии с простым «порядком приоритета», но привязаны к нескольким сравнениям с «и». – BrenBarn
@BrenBarn Я думал, что понял, но я думаю, что я не получу никаких последствий. Я попробую написать его с цепочкой и посмотреть, смогу ли я лучше понять, где я ошибаюсь. –
@BrenBarn Итак, вычисляемый фактический оператор равен 1 <-1 и -1 == (3> 4), что приводит к окончательной оценке False и False, что приводит к False. Мне нужно поиграть с ним еще немного, я думаю. Спасибо за помощь! –