provinha 03: solução

provinha 03: solução

por José Coelho de Pina -
Número de respostas: 3

Questão 1. A seguir está uma transcrição de uma seção do Python shell. Complete as lacunas com o tipo e valor do resultado da expressão correspondente. Se um erro ocorre, escreva ERRO.

In [1]: a = 3.1

In [2]: a == 10

In [3]: a                                tipo: float      valor: 3.1

In [4]: a = 2

In [5]: b = a

In [6]: b = 3

In [7]: a                                 tipo: int         valor: 2

In [8]: 23 = c                        tipo:                valor: ERRO

In [9]: False or True           tipo: bool        valor: True

In [10]: False and True       tipo: bool        valor: False

In [11]: 3 - 1 != 2.0           tipo: bool        valor: True False (por Eduardo)

In [12]: d = 3 != 4

In [13]: d                               tipo: bool         valor: True

Questão 2. Para cada um dos trechos de código a seguir indique a saída (= resultado de print()). Se nada é impresso, escreva NADA. Se um erro ocorre, escreva ERRO.

if 10 > 6 and 2 <= -7:
     print("oi")

Saída: NADA

if 7 > 7 or 1 < 20:
    print("vixe!")
else:
    print("nossa!")

Saída: vixe!

if 7 > 7:
    print("vixe!")
elif 7 < 7:
    print("nossa!")
else:
    print("errei!")

Saída: errei!

right


Comentários?

Em resposta à José Coelho de Pina

Re: provinha 03: solução

por Eduardo Ventilari Sodré -

Boa noite professor,

Quanto à terceira provinha, tenho certa dúvida no In [11]. Achei que os operadorees booleanos comparavam apenas os valor das expressões e não seu tipo (tratando de float e int), de modo que 3 - 1 tem o mesmo valor de 2.0. Mas então porque 3 - 1 != 2.0 retorna o booleano True?

Obrigado pela atenção. 

Em resposta à Eduardo Ventilari Sodré

Re: provinha 03: solução

por Wilson Marco Sales Moncayo -

Você está certo sobre os valores serem comparados, independente de tipo. Esta página mostra exemplos de conversão implícita de tipos em Python e Javascript, linguagens de tipagem dinâmica. No final da página, pode-se ver dois valores de tipos distintos (int e float) sendo comparados e resultando em True. Há, porém, certas particularidades de números de ponto flutuantes relativas à forma como estes são armazenados no computador e o surgimento de dízimas que não vemos nos números decimais (0.1 em binário, por exemplo), mencionadas nesta pergunta sobre comparações com inteiros.

E sim, 3 - 1 != 2.0 deveria dar False: o faz nos interpretadores que tenho instalado de CPython.

Comparação presente na provinha.

Em resposta à Eduardo Ventilari Sodré

Re: provinha 03: solução

por José Coelho de Pina -

Ois Eduardo e Wilson,

Achei que os operadorees booleanos comparavam apenas os valor das expressões e não seu tipo (tratando de float e int), de modo que 3 - 1 tem o mesmo valor de 2.0

Perfeito!
A comparação é entre valores.
[11] estava errado e já foi corrigido. olho roxo
Muito obrigado por avisar!

Na dúvida, façam sempre como o Wilson fez, perguntem o que o Python tem a dizer a respeito.

Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
Type "copyright", "credits" or "license" for more information.

IPython 6.1.0 -- An enhanced Interactive Python.

In [1]: 3 - 1 != 2
Out[1]: False

In [2]: 3 - 1 != 2.0
Out[2]: False

In [3]: 3 - 1 == 2
Out[3]: True

In [4]: 3 - 1 == 2.0 
Out[4]: True