quarta-feira, 17 de junho de 2015

Falando sobre Python -Parte 8 - Operadores e operandos, Operações com Strings

quarta-feira, 17 de junho de 2015 - by Unknown 0






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.

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 e, 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.

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?

Tags:
Sobre o Autor

Escreva a descrição de administração aqui ..

0 comentários:

Colabore!

Certificações

certificación Ubuntu

Parceiros