Operadores básicos
Um
operador é um símbolo da linguagem de programação, capaz de operar com os valores.
Por exemplo, assim como na aritmética, o sinal de + (mais) é o operador que é capaz de adicionar dois números, dando o resultado da adição.
Nem todos os operadores Python são tão óbvios quanto o sinal de mais, então vamos ver alguns dos operadores disponíveis no Python, e vamos explicar quais regras regem o uso e como interpretar as operações que realizam.
Vamos começar com os operadores que estão associados às operações aritméticas mais amplamente reconhecidas:
A ordem de aparência não é acidental. Falaremos mais sobre isso depois de passar por todos eles.
Lembre-se: os dados e os operadores, quando conectados, formam
expressões. A expressão mais simples é um literal em si.
Exponenciação
Veja o exemplo a seguir no editor:
- exponenciacao.png (14.98 KiB) Exibido 45 vezes
Nota: Recebemos os asteriscos duplos com espaços em nossos exemplos. Não é obrigatório, mas melhora a
legibilidade do código.
Os exemplos mostram uma característica muito importante de praticamente todos os
operadores numéricos do Python.
Execute o código e observe cuidadosamente os resultados que produz. Você pode ver alguma regularidade aqui?
Lembre-se: É possível formular as seguintes regras com base neste resultado:
- Quando os dois ** argumentos são inteiros, o resultado também é um número inteiro;
- Quando pelo menos um argumento ** é um float, o resultado também é um float.
Esta é uma distinção importante para se lembrar.
Multiplicação
Um sinal de * (asterisco) é um operador de
multiplicação.
Execute o código abaixo e verifique se nossa regra de número
inteiro vs. flutuante ainda está funcionando.
- multiplicacao.png (14.05 KiB) Exibido 41 vezes
Divisão
Um sinal / (barra) é um operador de
divisão.
O valor na frente da barra é um
dividendo, o valor atrás da barra, um
divisor.
Execute o código abaixo e analise os resultados.
- divisao.png (14.83 KiB) Exibido 39 vezes
Você verá que há uma exceção à regra.
O resultado produzido pelo operador de divisão é sempre um float, independentemente de parecer ou não ser um flutuante à primeira vista: 1 / 2, ou se parece com um inteiro puro: 2 / 1.
Isso é um problema? Sim, o limite continua igual. Às vezes acontece que você realmente precisa de uma divisão que forneça um valor inteiro, não um valor flutuante.
Felizmente, o Python pode ajudá-lo com isso.
Divisão de número inteiro (divisão arredondada)
Um sinal // (barra dupla) é um
operador de divisão inteira. Difere do padrão / operador em dois detalhes:
- seu resultado não possui a parte fracionária ‒ está ausente (para inteiros), ou é sempre igual a zero (para flutuantes); isso significa que os resultados são sempre arredondados;
- ele está de acordo com a regra integer vs. float.
Execute o exemplo abaixo e veja os resultados:
- divisao2.png (14.56 KiB) Exibido 39 vezes
Como você pode ver, a
divisão de inteiro por inteiro dá um
resultado inteiro. Todos os outros casos produzem floats.
Vamos fazer alguns testes mais avançados.
Observe o trecho a seguir:
- divisao3.png (9.7 KiB) Exibido 39 vezes
Imagine que usamos / em vez de // - você poderia prever os resultados?
Sim, seria
1.5 em ambos os casos. Isso é claro.
Mas que resultados devemos esperar com a // divisão?
Execute o código e veja por si mesmo.
O que obtemos são dois uns - um inteiro e um flutuador.
O resultado da divisão do número inteiro é sempre arredondado para o valor inteiro mais próximo que é menor que o resultado real (não arredondado).
Isso é muito importante:
o arredondamento sempre vai para o número inteiro menor.
Observe o código abaixo e tente prever os resultados mais uma vez:
- divisao4.png (10.52 KiB) Exibido 39 vezes
Nota: alguns valores são negativos. Obviamente, isso afetará o resultado. Mas como?
O resultado é dois pares negativos. O resultado real (não arredondado) é -1.5 em ambos os casos. No entanto, os resultados são sujeitos a arredondamento. O
arredondamento vai em direção ao valor inteiro menor, e o valor inteiro menor é -2, portanto: -2 e -2.0.
Observação
A divisão inteira também pode ser chamada de
divisão de piso. Você definitivamente vai encontrar esse termo no futuro.
Restante (módulo)
O próximo operador é bastante peculiar, porque não tem equivalente entre os operadores aritméticos tradicionais.
Sua representação gráfica em Python é o sinal de % (percentual), que pode parecer um pouco confuso.
Tente pensar nisso como uma barra (operador de divisão) acompanhada de dois pequenos círculos engraçados.
O resultado do operador é o
restante após a divisão do número inteiro.
Em outras palavras, é o valor que falta depois de dividir um valor por outro para produzir um quociente inteiro.
Nota: o operador às vezes é chamado de
módulo em outras linguagens de programação.
Dê uma olhada no snippet - tente prever o resultado e execute-o:
- restante.png (8.52 KiB) Exibido 37 vezes
Como você pode ver, o resultado é dois. É por isso que:
- 14 // 4 dá 3 → este é o quociente inteiro;
- 3 * 4 dá 12 → como resultado da multiplicação de quociente e divisor;
- 14 - 12 dá 2 → este é o restante.
Este exemplo é um pouco mais complicado:
Qual é o resultado?
3.0 – não 3 mas 3.0. A regra ainda funciona:
- 12 // 4.5 dá 2.0,
- 2.0 * 4.5 dá 9.0,
- 12 - 9.0 dá 3.0.
Como não dividir
Como você provavelmente sabe,
a divisão por zero não funciona.
Não tente:
- realizar uma divisão por zero;
realizar uma divisão inteira por zero;
encontre o resto de uma divisão por zero.
Adição
O operador de
adição é o sinal de + (mais), que está totalmente de acordo com os padrões matemáticos.
Novamente, dê uma olhada no snippet do programa abaixo:
- adicao.png (10.34 KiB) Exibido 15 vezes
O resultado não deve ser surpreendente. Execute o código para verificá-lo.
O operador de subtração, os operadores unários e binários
O operador de
subtração é obviamente o sinal - (menos), embora você deva notar que esse operador também tem outro significado -
ele pode alterar o sinal de um número.
Esta é uma grande oportunidade para apresentar uma distinção muito importante entre operadores
unários e
binários.
Ao subtrair aplicações, o
operador menos espera dois argumentos: o esquerdo (um
minuendo em termos aritméticos) e o direito (um
subtraendo).
Por esta razão, o operador de subtração é considerado um dos operadores binários, assim como os operadores de adição, multiplicação e divisão.
Mas o operador menos pode ser usado de uma forma diferente (unária) ‒ dê uma olhada na última linha do trecho abaixo:
- menos.png (11.66 KiB) Exibido 12 vezes
A propósito: também há um operador + unário. Você pode usá-lo assim:
O operador preserva o sinal de seu único argumento - o correto.
Embora essa construção seja sintaticamente correta, usá-la não faz muito sentido e seria difícil encontrar uma boa lógica para isso.
Dê uma olhada no snippet acima - você consegue adivinhar o resultado?
Algumas pessoas acham que foco significa dizer sim para a coisa em que você vai se focar.
Mas não é nada disso.
Significa dizer não às centenas de outras boas ideias que existem.
Você precisa selecionar cuidadosamente.”
Steve Jobs