Назад к вопросам
Junior
67
questionbank

Как работают логические операторы and, or и not в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Операторы and, or и not используются для комбинирования или изменения логических выражений.

  • and: Возвращает True, если оба операнда истинны. В противном случае возвращает False. При коротком замыкании, если левый операнд ложный, правый не вычисляется.

    # Пример работы and
    print(True and True)    # Истинно, оба True
    print(True and False)   # Ложно, один False
    print(False and True)   # Ложно, один False
    print(False and False)  # Ложно, оба False
    
  • or: Возвращает True, если хотя бы один из операндов истинен. Возвращает False только если оба операнда ложны. При коротком замыкании, если левый операнд истинный, правый не вычисляется.

    # Пример работы or
    print(True or True)    # Истинно, оба True
    print(True or False)   # Истинно, один True
    print(False or True)   # Истинно, один True
    print(False or False)  # Ложно, оба False
    
  • not: Отрицает логическое значение операнда. Возвращает True, если операнд ложный, и False, если операнд истинный.

    # Пример работы not
    print(not True)   # False
    print(not False)  # True
    

Помимо булевых значений (True и False), эти операторы также работают с другими типами данных, используя их "истинность" или "ложность" в булевом контексте:

  • Числа: nonzero (истинные), zero (ложные).
  • Строки, списки, кортежи, словари, множества: непустые (истинные), пустые (ложные).
  • None: ложный.

При вычислении and и or Python возвращает не только True или False, но и один из операндов (короткое замыкание):

  • a and b: Если a ложно, возвращает a. Иначе возвращает b.
    print(0 and 5)  # 0 (0 ложно)
    print(5 and 0)  # 0 (5 истинно, возвращает 0)
    print(1 and 2)  # 2 (1 истинно, возвращает 2)
    
  • a or b: Если a истинно, возвращает a. Иначе возвращает b.
    print(0 or 5)  # 5 (0 ложно, возвращает 5)
    print(5 or 0)  # 5 (5 истинно, возвращает 5)
    print(1 or 2)  # 1 (1 истинно, возвращает 1)
    

Это поведение важно для условных выражений и назначения значений по умолчанию.