Водя въвеждащ курс по Python този семестър (използвайки 3.4) и наскоро попаднах на упражнение за приоритета на операторите и използването на скоби, за да направя изявление, оценявано като истина.
Точният въпрос е:
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
Но когато стартирам кода, той все още връща false. Видях този въпрос приоритета на операторите за сравнение в Python срещу C/C++ и резултатът от този израз има смисъл за мен; но в този случай принудих оценката на последния израз, преди да оценя останалата част от израза, така че не разбирам защо все още получавам грешен отговор.
Взирах се в него през последния час и имам чувството, че може да пропускам нещо очевидно; ако някой може да даде представа какво може да е правилното решение, ще бъда много оценен.
and
. - person BrenBarn   schedule 30.01.2015>
се предполага да бъда<
..) - person DSM   schedule 30.01.2015eval
, за да вмъкна ръчно скоби във всяко възможно място, за да видя дали пропускам нещо, и не намерих решения за1 < -1 == 3 > 4
, въпреки че1 < -1 == 3 < 4
имаше(1 < -1 == 3) < 4
. - person DSM   schedule 30.01.20151 < -(1 == 3 > 4)
? Моят не го направи, но няма значение -- това също еFalse
. - person Robᵩ   schedule 30.01.2015