Python оператор «не» - PullRequest
       78

Python оператор «не»

0 голосов
/ 26 апреля 2020
x = 0

if not x:
    print(bool(x))
    print("Evaluated True")

else:
    print(bool(x))
    print("Evaluated False")

Выход

False
Evaluated True

Почему блок else не выполняется? Я думаю, что x = 0 - это False, а не x - True. Или я неправильно понимаю булево определение?

Ответы [ 7 ]

2 голосов
/ 26 апреля 2020
>>> x = 0
>>> if x:
...   print(bool(x), "Evaluated True")
... else:
...   print(bool(x),"Evaluated False")
... 
False Evaluated False

Примечание: Логическое значение True для всех целых чисел, кроме 0

2 голосов
/ 26 апреля 2020

Вы должны напечатать выражение if 'not x'. Тогда вы видите не x == не False == True.

x = 0

if not x:
    print(bool(not x))
    print("Evaluated True")

else:
    print(bool(not x))
    print("Evaluated False")

ответ:

True
Evaluated True
1 голос
/ 26 апреля 2020
False
Evaluated True

Ваш вывод правильный. Вы правильно поняли логическое понятие ( x = 0 - False, а не x - True ), но ваша реализация неверна.

x = 0

if not x:
    print(bool(x))
    print("Evaluated True")

В вашем коде:

if not x означает if (not x)==True, что абсолютно правильно, поэтому условие if выполняется.

Использование if (some condition) иногда сложно. Это также иногда из-за отсутствия скобок.

Вы можете достичь желаемого результата с помощью этого if (not x)==False.

1 голос
/ 26 апреля 2020

Логическое значение истинно для всех, кроме 0. not x == True, поэтому оно оценивается true.

1 голос
/ 26 апреля 2020
if not x

Это правда, поэтому строка, следующая за if, выполняется. Er go, остальное НЕ выполняется. Он будет выполнен только в том случае, если оператор if будет ложным.

1 голос
/ 26 апреля 2020

Таким образом, как вы говорите: not x == True, поэтому оператор if будет выполнен.

1 голос
/ 26 апреля 2020

Когда выражение внутри оператора if истинно, блок if выполняется. Поскольку x равен 0, то not x имеет значение true, что означает, что блок if будет выполняться, а не блок else.

print (bool (x)) выведет false, поскольку x равен 0.

...