Проверка логической переменной - PullRequest
0 голосов
/ 11 мая 2018

Я создал серию инструментов и наткнулся на ряд проблем с рабочим процессом обработки из-за логических переменных.

У меня есть следующий пример:

a = False
b = 'false'
c = 1

if a:
    print('a is: ', a)

if b:
    print('b is: ', b)

if c:
    print('c is: ', c)

Вывод:

b is:  false
c is:  1

Почему в приведенном выше примере я не напечатал значение?Я использую Python 3. Спасибо!

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

В Python:

if something:
   action

Чтобы выполнить action, something должно быть True. Это не относится к вашему a, поэтому action (печать) здесь не выполняется.

Так что в вашем случае, если вы хотите напечатать это, вам нужно использовать not:

if not a:
    print('a is: ', a)
0 голосов
/ 11 мая 2018

В вопросе это просто потому, что a - это False.


Однако я предполагаю, что вы хотели проверить существование из a, b и c, верно?

Чтобы проверить наличие локальной переменной:

if 'myVar' in locals():
# myVar exists.

Чтобы проверить существование глобальной переменной:

if 'myVar' in globals():
# myVar exists.

В python типы исправлены. Вы не можете привести один тип к другому, как в Javascript. Итак, в вашем коде:

  • False просто ложь. Вот почему он не будет распечатывать материал внутри оператора if.
  • 'false' - строка, но вы можете сделать if с ней. Учтите следующее:

    if "":
         print("1")
    
    if "abc":
         print("2")
    

    это будет печатать только 2, поэтому оператор if здесь проверяет, не является ли строка пустой.

  • То же самое с if используется для целых чисел. Он проверит, не является ли номер не нулевым.

0 голосов
/ 11 мая 2018

Потому что ваше состояние: если: И ложь

...