Skip to content

Latest commit

 

History

History
257 lines (187 loc) · 10.2 KB

07.Operadores.md

File metadata and controls

257 lines (187 loc) · 10.2 KB

Operadores

Operadores são símbolos especiais capazes de executar computação aritmética ou lógica.

Os operadores são usados para realizar operações em variáveis e valores.

Existem diversos tipos de operadores em Python:

  • Operadores Aritméticos
  • Operadores de Atribuição
  • Operadores de Comparação
  • Operadores Lógicos
  • Operadores de Identidade
  • Operadores de Membros
  • Operadores Bitwise

Vejamos então como eles funcionam em mais detalhes.

Operadores Aritméticos

Operadores aritméticos são usados com valores numéricos para realizar operações matemáticas comuns:

Operador Descrição Exemplo
+ Adiciona dois operandos 2+5
- Subtrai o operando da direita pelo da esquerda 7-2
* Multiplica dois operandos 3*3
/ Divide o operando da esquerda pelo da direita 3/2
% Módulo, resto da divisão do operando da esquerda pelo da direita 10%3
// Divisão arredondada, esta divisão retorna um número inteiro 3//2
** Expoente, operando a esquerda elevado à potência do operando a direita 2**32

Por exemplo:

x = 10
y = 6
z = 6.0

print("x + y = ", x+y)   # Nos resulta 16
print("x - y = ", x-y)   # Nos resulta 4
print("x * y = ", x*y)   # Nos resulta 60
print("x / y = ", x/y)   # Nos resulta 1.6666666666666667	
print("x / z = ", x/z)   # Nos resulta 1.6666666666666667	
print("x // y = ", x//y) # Nos resulta 1
print("x ** y = ", x**y) # Nos resulta 1000000

Observe que definimos a variável z com o valor 6.0, um número ponto flutuante, de forma que Python possa nos trazer um resultado ponto flutuante no momento de fazermos a divisão do valor de x por z.

Operadores de Atribuição

Operadores de atribuição são usados para atribuir valores a variáveis:

Operador Exemplo 1 Exemplo 2
= x = 3 x = 3
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3
%= x %= 3 x = x % 3
//= x //= 3 x = x // 3
**= x **= 3 x = x ** 3
&= x &= 3 x = x & 3
|= x |= 3 x = x | 3
^= x ^= 3 x = x ^ 3
>>= x >>= 3 x = x >> 3
<<= x <<= 3 x = x << 3

Vejamos um simples exemplo:

a = 1
a += 3

print(a) # 4

Operadores de Comparação

Operadores de comparação são usados para comparar valores. Retornarão True ou False de acordo com a condição.

Operador Descrição Exemplo
> Maior que - True se o operando a esquerda for maior que o da direita x > y
< Menor que - True se o operando a esquerda for menor que o da direita x < y
== Igual - True se ambos os operandos forem iguais x == y
!= Não Igual - True se os operandos forem diferentes x != y
>= Maior que ou Igual - True se o operando da esquerda for maior ou igual ao da direita x >= y
<= Menor que ou Igual - True se o operando da esquerda for menor ou igual ao da direita x <= y

Vejamos alguns exemplos de comparações:

x = 12
y = 3

print(x>y)   # True
print(x<y)   # False
print(x==y)  # False
print(x!=y)  # True
print(x>=y)  # True
print(x<=y)  # False

Operadores Lógicos

Operadores Lógicos são usados para combinar comandos condicionais.

Operador Descrição Exemplo
and Retorna True se ambos os comandos são verdadeiros x < y and x < 10
or Retorna True se um dos comandos é verdadeiro x < y or x > 3
not Reverte o resultado, retorna False se o resultado for True e vice-versa not(x > 10)

Vamos considerar então alguns exemplos com operadores lógicos:

n1, n2, n3 = 3, 6, 7

print(n1 < n2 and n1 < n3) # True
print(n1 == n2 or n3 == n2) # False
print(not True) # False

Operadores de Identidade

Operadores de identidade são usados para comparar os objetos, não se são iguais, mas se eles forem realmente o mesmo objeto, com o mesmo local de memória.

is e is not são operadores de identidade em Python, eles são usados para checar se dois valores (ou variáveis) estão localizados na mesma área de memória, duas variáveis iguais não significam que são idênticas!

Operador Descrição
is True se os operandos são idênticos (referem ao mesmo objeto)
is not True se os operandos não são idênticos (não referem ao mesmo objeto)

Exemplo com números:

x = 1
y = 1 

print(x is y)     # True
print(x is not y) # False

Exemplo com strings:

a = "cachorro"
b = "cachorro"

print(a is b)      # True
print(a is not b)  # False

Exemplo com listas:

z = [1,2,3]
k = [1,2,3]

print(z is k)      # False
print(z is not k)  # True

Perceba aqui que x e y são inteiros do mesmo valor, então eles são iguais e idênticos, o mesmo vale para a e b (strings). Porém o mesmo não ocorre com z e k, que são iguais, porem não idênticos, isso porque o interpretador localiza eles separadamente em memória, mesmo eles sendo iguais.

Operadores de Membros

Operadores de membros são usados para testar se uma sequência é apresentada em um objeto.

Operador Descrição Exemplo
in Retorna True se o valor/variável é encontrado na sequência "c" in "cachorro"
not in Retorna True se o valor/variável não está presenta na sequência 1 not in [1,2,3]

Exemplo básico:

a = [1,2,3]
b = "Guilherme"

print(1 in a)   # Retorna True, pois 1 se encontra na lista a
print("o" in b) # Retorna False, pois o não se encontra na string b

Operadores Bitwise

Os operadores Bitwise atuam nos operandos como se eles fossem strings ou dígitos binários, eles executam operações bit por bit, por isso levam o nome Bitwise.

Considere o valor 2 que é representado por 10 em binário e 7 que é representado por 111.

Vamos utilizar a função bin() que nos retorna uma string binária:

x = 10
y = 4

print(bin(x)) # 0b1010
print(bin(y)) # 0b100

Adaptando-os, temos (x = 0000 1010) em binário e (y = 0000 0100) em binário, vamos aos operadores:

Operador Descrição Exemplo
& Bitwise AND x & y = 0 (0000 0000)
| Bitwise OR x | y = 14 (0000 1110)
~ Bitwise NOT ~x = -11 (1111 0101)
^ Bitwise XOR x ^ y = 14 (0000 1110)
>> Bitwise right shift x >> 2 = 2 (0000 0010)
<< Bitwise left shift x << 2 = 40 (0010 1000)

Precedência de Operadores

Vamos agora considerar a seguinte expressão:

print(3 + 4 * 5) # 23

Há ambigüidade nesta expressão. O Python deve realizar a adição 3 + 4 primeiro e depois multiplicar a soma por 5? Ou a multiplicação de 4 * 5 deve ser realizada primeiro?

Uma vez que nosso resultado é 23, significa que Python optou por multiplicar primeiro e depois realizar a adição, este é o procedimento padrão algébrico, encontrado universalmente em todas as linguagens de programação.

Todos os operadores suportados por Python têm precedência. Em uma expressão, todos os operadores de maior precedência são executados primeiro. Depois que esses resultados são obtidos, os operadores da próxima precedência mais alta são executados. Então continua-se, até que a expressão seja totalmente avaliada. Quaisquer operadores de igual precedência são executados da esquerda para a direita.

A tabela a seguir apresenta a ordem de precedência dos operadores Python do menor ao maior:

Operador Descrição
menor precedência or Boolean OR
and Boolean AND
not Boolean NOT
==, !=, <, <=, >, >=, is, is not Comparações, Identidade
| Bitwise OR
^ Bitwise XOR
& Bitwise AND
<<, >> Bit Shifts
+, - Adição, Subtração
*, /, //, % Multiplicação, Divisão, Floor Division, Modulus
+x, -x, ~x Unário Positivo, Unário Negativo, Bitwise Negation
maior precedência ** Exponenciação

Os operadores na parte superior da tabela têm a precedência mais baixa e aqueles na parte inferior da tabela têm a mais alta. Quaisquer operadores na mesma linha da tabela têm precedência igual.

A precedência do operador pode ser substituída usando parênteses. As expressões entre parênteses são sempre executadas primeiro, antes das expressões que não estão entre parênteses. Por exemplo:

print(3 + 3 * 5) # 18
print((3 + 3) * 5) # 30

Lembre sempre que os operadores tem um papel fundamental na programação e que devemos entender o seu funcionamento de maneira plena, faça experimentos e divirta-se com os cálculos!