Expressões
Uma expressão é uma combinação de valores, variáveis e operadores. Se você digitar uma expressão na linha de comando, o interpretador avalia e exibe o resultado:
>>> 2 + 3 5
Embora expressões contenham valores, variáveis e operadores, nem toda expressão contém todos estes elementos. Um valor por si só é considerado uma expressão, do mesmo modo que uma variável:
>>> x = 10 >>> 17 17 >>> x 10 >>>
Avaliar uma expressão não é exatamente a mesma coisa que imprimir um valor:
>>> texto = "Hello Word" >>> texto 'Hello Word' >>> print(texto) Hello Word >>>
Reparem que na 2a. linha, é avaliado a variável texto e mostrado seu conteúdo mostrado a seguir, explicitando que é string Já na 4a. linha, é solicitado que imprima o conteúdo da variável texto e em seguida é mostrado o que a expressão ped.
Quando Python exibe o valor de uma expressão, usa o mesmo formato que você usaria para entrar com o valor.
No caso de strings, isso significa que as aspas são incluídas mas o comando print imprime o valor da expressão, que, neste caso, é o conteúdo da string.
- N.T.: Python aceita aspas simples ou duplas para delimitar strings. Num script, uma expressão sozinha é um comando válido, porém sem efeito.
O script:
22 3.2 "Alo" 2 + 2
não produz qualquer saída.
Como você mudaria o “script” para exibir os valores destas quatro expressões?
Operadores e operandos

Operadores são símbolos especiais que representam computações como adição e multiplicação.
Os valores que o operador usa são chamados operandos.
Todas as expressões seguintes são válidas em Python e seus significados são mais ou menos claros:
20+32 hora-1 hora*60+minuto minuto/60 5**2 (5+9)*(15-7)
Em Python, os símbolos +, -, / e o uso de parênteses para agrupamento têm o mesmo significado que em matemática.
O asterisco (*) é o símbolo para multiplicação e ** é o símbolo para potenciação.
Quando um nome de variável aparece no lugar de um operando, ele é substituído pelo valor da variável, antes da operação ser executada.
>>> x = 25.2 >>> y = 10.3 >>> print(x,y) (25.2, 10.3) >>> print x , y 25.2 10.3 >>>
>>> x = 25.2
>>> y = 10.3
>>> print x
25.2
>>> print x + y
35.5
>>> print x, print y
File "<stdin>", line 1
print x, print y
^
SyntaxError: invalid syntax
>>> print x; print y
25.2
10.3
Adição, subtração, multiplicação e potenciação fazem o que se espera, mas você pode ficar surpreso com a divisão.
A operação seguinte tem um resultado inesperado:
>>> minuto = 59 >>> minuto/60 0
O valor de minuto é 59 e, em aritmética convencional, 59 dividido por 60 é 0,98333, não 0.
A razão para a discrepância é que Python está realizando uma divisão inteira.
Quando ambos os operandos são inteiros, o resultado tem de ser também um inteiro.
Por convenção, a divisão inteira sempre arredonda para baixo, mesmo em casos como este, em que o inteiro seguinte está muito próximo:
>>> minuto*100/60 98
De novo, o resultado é arredondado para baixo, mas agora pelo menos a resposta é aproximadamente correta.
A alternativa é usar a divisão em ponto flutuante, o que veremos no capítulo 3.
Que tal arredondar um número? Utilize o comando round
Ordem dos operadores
Quando mais de um operador aparece em uma expressão, a ordem de avaliação depende das regras de precedência.
Python segue as mesmas regras de precedência para seus operadores matemáticos que a matemática.
O acrônimo PEMDAS é uma maneira prática de lembrar a ordem das operações:
P: Parênteses têm a mais alta precedência e podem ser usados para forçar uma expressão a ser avaliada na ordem que você quiser.
Já que expressões entre parênteses são avaliadas primeiro, 2 * (3-1) é 4, e (1+1)**(5-2) é 8.
Você também pode usar parênteses para tornar uma expressão mais fácil de ler, como em (minuto * 100) / 60, ainda que isso não altere o resultado.
E: Exponenciação ou potenciação tem a próxima precedência mais alta, assim 2**1+1 é 3 e não 4, e 3*1**3 é 3 e não 27.
MDAS: Multiplicação e Divisão têm a mesma precedência, que é mais alta do que a da Adição e da Subtração, que também têm a mesma precedência.
Assim 2*3-1 dá 5 em vez de 4, e 2/3-1 é -1, não 1 (lembre-se de que na divisão inteira, 2/3=0).
Operadores com a mesma precedência são avaliados da esquerda para a direita.
Assim, na expressão minuto*100/60, a multiplicação acontece primeiro, resultando em 5900/60, o que se transforma produzindo 98.
Se as operações tivessem sido avaliadas da direita para a esquerda, o resultado poderia ter sido 59*1, que é 59, que está errado.
Operações com strings

De maneira geral, você não pode executar operações matemáticas em strings, ainda que as strings se pareçam com números.
O que segue é inválido (assumindo que mensagem é do tipo string):
mensagem-1 "Alô"/123 mensagem*"Alô" "15"+2
Interessante é o operador +, que funciona com strings, embora ele não faça exatamente o que você poderia esperar.
Para strings, o operador + representa concatenação, que significa juntar os dois operandos ligando-os pelos extremos. Por exemplo:
fruta = "banana" assada = " com canela" print fruta + assada
A saída deste programa é banana com canela. O espaço antes da palavra com é parte da string e é necessário para produzir o espaço entre as strings concatenadas.
O operador * também funciona com strings; ele realiza repetição. Por exemplo, "Legal"*3 é "LegalLegaLegal".
Um dos operadores tem que ser uma string; o outro tem que ser um inteiro.
Por um lado, esta interpretação de + e * faz sentido pela analogia entre adição e multiplicação.
Assim como 4*3 equivale a 4+4+4, não é de estranhar que "Legal"*3 seja o mesmo que "Legal"+"Legal"+"Legal".
Por outro lado, uma diferença significativa separa concatenação e repetição de adição e multiplicação.
Você saberia mencionar uma propriedade da adição e da multiplicação que não ocorre na concatenação e na repetição?
Composição
Até agora, vimos os elementos de um programa (variáveis, expressões, e instruções ou comandos) isoladamente, sem mencionar como combiná-los.
Uma das características mais práticas das linguagens de programação é a possibilidade de pegar pequenos blocos e combiná-los numa composição.
Por exemplo, nós sabemos como somar números e sabemos como exibi-los; acontece que podemos fazer as duas coisas ao mesmo tempo:
>>> print 17 + 3 20
Na realidade, a soma tem que acontecer antes da impressão, assim, as ações não estão na realidade acontecendo ao mesmo tempo.
O ponto é que qualquer expressão envolvendo números, strings, e variáveis pode ser usada dentro de um comando print.
Exemplo:
>>> hora = 16 >>> minutos = 22 >>> print "O numero de minutos desde a meia-noite é ",hora*60+minutos O numero de minutos desde a meia-noite é 982 >>>
Esta possibilidade pode não parecer muito impressionante agora, mas você verá outros exemplos em que a composição torna possível expressar cálculos e tarefas complexas de modo limpo e conciso.
- Atenção:
- Existem limites quanto ao lugar onde você pode usar certos tipos de expressão.
- Por exemplo, o lado esquerdo de um comando de atribuição tem que ser um nome de variável, e não uma expressão.
- Assim, o seguinte não é válido:
- minuto+1 = hora.