Python e Operador – 03

Resumo : neste tutorial, você aprenderá sobre o andoperador lógico Python e como usá-lo para controlar o fluxo de código.

Introdução ao andoperador Python

andO operador Python é um operador lógico . Normalmente, você usa o andoperador para operar com valores booleanos e retornar um valor booleano .

O andoperador retorna Truese ambos os operandos forem avaliados como True. Caso contrário, ele retorna False.

A tabela verdade a seguir mostra o resultado do andoperador:

X S X e Y
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Falso Falso Falso
Falso Verdadeiro Falso

Esta tabela ilustra dois pontos importantes:

  • Se o primeiro operando ( X) for True, o resultado do andoperador depende do resultado do segundo operando ( Y).
  • Se o primeiro operando ( X) for False, o resultado do andoperador será sempre Falseindependente do valor do segundo operando ( Y).

O seguinte mostra um exemplo de uso do andoperador:

timeout = False
pending_job = True
execute_next = timeout and pending_job

print(execute_next)Linguagem de código:  Python  ( python )

Saída:

FalseLinguagem de código:  Python  ( python )

Neste exemplo, o timeoutis Falsee pending_jobis True. Portanto, o resultado da expressão timeout and pending_jobé False.

Operador Python andestá em curto-circuito

A principal característica do andoperador é que ele entra em curto-circuito. Isso significa que se o primeiro operando for False, o andoperador não avaliará o segundo operando. A razão é que já tem uma conclusão sobre o resultado, que é False.

O exemplo a seguir resulta em ZeroDivisionError:

a = 10
b = 0
c = a / b
print(c)Linguagem de código:  Python  ( python )

Neste exemplo, como bé zero, a / bdefinitivamente causa a exceção de divisão por zero.

No entanto, o exemplo a seguir não causará ZeroDivisionError:

a = 10
b = 0
c = b and a/b
print(c)Linguagem de código:  Python  ( python )

Saída:

0Linguagem de código:  Python  ( python )

Neste exemplo, usamos o andoperador na expressão:

c = b and a/bLinguagem de código:  Python  ( python )

Como bé zero, ou seja False, o andoperador pode concluir o resultado de toda a expressão, independente Falsedo resultado da segunda parte a / b. Portanto, o andoperador não precisa avaliar a expressão a / b. Na verdade, isso não acontece.

O exemplo a seguir altera o valor de bpara cinco:

a = 10
b = 5
c = b and a/b
print(c)Linguagem de código:  Python  ( python )

Saída:

2.0Linguagem de código:  Python  ( python )

Neste exemplo, bé 5qual é True. Como o primeiro operando é True, o valor de toda a expressão depende do valor do segundo operando, que é a / b.

Esses exemplos mostram que o andoperador pode operar com valores não booleanos e retornar um valor booleano sem valor.

Em geral, você pode usar o andoperador para os objetos:

bool(object1) and bool(object2)Linguagem de código:  Python  ( python )

Na verdade, você não precisa usar o bool()construtor:

object1 and object2Linguagem de código:  Python  ( python )

Neste caso, o andoperador retorna se object1for falso. Caso contrário, ele retorna o object2.

Em outras palavras, o andoperador retorna the object1se the object1for falso. Caso contrário, ele avalia object2e retorna.

A expressão

c = b and a/bLinguagem de código:  Python  ( python )

é equivalente ao seguinte:

if b:
    c = a / b
else:
    c = bLinguagem de código:  Python  ( python )

Usando o andoperador, você pode controlar o fluxo do programa.

andExemplo de operador Python

O seguinte define a avg()função que calcula a média dos números:

def avg(*numbers):
    total = sum(numbers)
    n = len(numbers)
    if n > 0:
        return total / n
    return 0


if __name__ == "__main__":
    print(avg(1, 2, 3))Linguagem de código:  Python  ( python )

Saída:

2Linguagem de código:  Python  ( python )

Como funciona.

  • Primeiro, calcule a soma dos números usando a sum()função.
  • Em segundo lugar, obtenha os números numéricos usando a len()função.
  • Terceiro, retorne a média se o número de números for maior que zero; caso contrário, retorne zero.

O bloco principal calcula a média de três números 1, 2 e 3, que retorna 2,0 conforme o esperado.

O código a seguir usa uma ifinstrução e retorna a média se o número de números for maior que zero. Caso contrário, retorna zero:

if n > 0:
    return total / n
return 0Linguagem de código:  Python  ( python )

Na verdade, você pode usar o operador and para tornar este código mais conciso assim:

return n and total / nLinguagem de código:  Python  ( python )

Neste caso, if nfor zero o operador and não precisa avaliar a expressão total / ne retorna zero. Caso contrário, ele avalia total / ne retorna.

Aqui está a nova versão da avg()função que usa o andoperador:

def avg(*numbers):
    total = sum(numbers)
    n = len(numbers)

    return n and total / nLinguagem de código:  Python  ( python )

Resumo

  • Os X and Yretornos Truesão ambos Xe Yavaliados como True. Caso contrário, ele retorna False.
  • Na X and Yverdade, retorna Xif Xé falso. Caso contrário, avalia Ye retorna o resultado da avaliação.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *