Python добавляет булеву и целочисленную абстракцию - PullRequest
0 голосов
/ 16 января 2019

В принципе, я не уверен, почему:

red, green = 44, 43
purple = red + green
print(red + green != purple + purple / purple - red % green)
// Returns False
// Essentially => red + green != purple + 0.0

print(red + True + 0.0) // Returns 45.0

Я не уверен, что вызывает разницу? Поскольку зеленый! = Фиолетовый также дает результат True, то почему абстракция вызывает разницу в значении?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

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

Поскольку вы проверили, отличаются ли они (используя! = Между двумя выражениями), вы получили False.

Я думаю, вы запутали способ проверки условий питоном. Когда вы используете операнд сравнения, python сначала оценивает обе стороны операнда, а затем сравнивает обе стороны.

Вы написали "Как зеленый! = Фиолетовый также дает результат True", но реальное сравнение - "(красный + зеленый)! = Фиолетовый".

0 голосов
/ 16 января 2019

Вы ошибаетесь в правилах оператора . По сути, выражение оценивается следующим образом:

red + green != purple + purple / purple - red % green
 = 44 + 43 != 87 + 87 / 87 - 44 % 43   # substitution
 = 87 != 87 + 1 - 1                    # perform / and % first
 = 87 != 87                            # sum
 = False                               # not equal

Что касается второго, red + True + 0.0, True повышается до 1, а сумма возвращается 45, затем добавление 0.0 переводит int в число с плавающей точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...