Criou página com '= Expressões = <br> 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 ex...'
 
Linha 42: Linha 42:


Como você mudaria o “script” para exibir os valores destas quatro expressões?
Como você mudaria o “script” para exibir os valores destas quatro expressões?
<br>
= Operadores e operandos =
<br>
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 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.
Quer arredondar um número? Utilize o comando round
<br>
= Ordem dos operadores =
<br>
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.
2.8 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 =
<br>
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. Você já tinha visto um exemplo disto:
print "Número de minutos desde a meia-noite: ", hora*60+minuto
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.

Edição das 10h57min de 6 de janeiro de 2016

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

Quer 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. 2.8 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. Você já tinha visto um exemplo disto:

print "Número de minutos desde a meia-noite: ", hora*60+minuto


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.