Вопрос

Как Python оценивает выражение 1+++2?

Сколько когда-либо + Я вставляю между ними, оно печатается 3 как ответ.Пожалуйста, кто-нибудь может объяснить такое поведение

И для 1--2 это печать 3 и для 1---2 это печать -1

Это было полезно?

Решение

Ваше выражение такое же, как:

1+(+(+2))

Любому числовому выражению может предшествовать - сделать его отрицательным или + ничего не делать (опция присутствует для симметрии).С отрицательными знаками:

1-(-(2)) = 1-(-2)
         = 1+2
         = 3

и

1-(-(-2)) = 1-(2)
          = -1

Я вижу, вы уточнили свой вопрос, сказав, что у вас образование C.В Python нет таких операторов приращения, как ++ и -- на C, что, вероятно, и стало причиной вашего замешательства.Чтобы увеличить или уменьшить переменную i или j в Python используйте этот стиль:

i += 1
j -= 1

Другие советы

Дополнительные + не являются инкрементами (например, ++a или a++ в C++).Они просто показывают, что число положительное.

Нет такого оператора ++.Однако есть унарный оператор + и унарный оператор -.Унарный оператор + не влияет на свой аргумент.Унарный оператор - отменяет свой оператор или умножает его на -1.

+1

-> 1

++1

-> 1

Это то же самое, что +(+(1))

   1+++2

-> 3, потому что это то же самое, что 1+(+(+(2))

Аналогично вы можете использовать --1, чтобы означать - (-1), что равно +1.

  --1

-> 1

Для полноты картины * унарный оператор отсутствует.Итак, *1 — это ошибка.Но есть ** оператор, который является мощностью, требуется 2 аргумента.

 2**3

-> 8

1 + (+ (+ 2)) = 3

1 - (-2) = 3

1 - (- (- 2)) = -1

Попытка Унарный плюс и Унарный минус :

  

Унарный оператор - (минус) возвращает отрицание своего числового аргумента.

     

Унарный оператор + (плюс) возвращает свой числовой аргумент без изменений.

>>> +2
2
>>> ++2
2
>>> +++2
2
>>> -2
-2
>>> --2
2
>>> ---2
-2
>>> 1+(++2)
3

Я считаю, что он анализируется как первый + как бинарная операция (добавить), а остальные как унарные операции (сделать положительным).

 1 + (+(+2))

Думайте как 1 + (+1 * (+ 1 * 2))). Первый знак «+» является оператором, а последующие знаки «плюс» являются знаком второго операнда (= 2).

Точно так же, как 1 --- 2 - это то же самое, что и 1 - - (- (2)) или 1- (-1 * (- 1 * (2))

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top