Fácil Python
Descobrindo tipos
Enunciado
Crie uma variável valor e atribua a ela, em sequência, um int, um float, uma str e um bool. Para cada atribuição, imprima o valor e o resultado de type(valor).
Requisitos
- Usar uma única variável chamada
valor. - Imprimir valor e tipo em cada uma das 4 atribuições.
- A saída deve mostrar exatamente os tipos
int,float,strebool.
Código inicial
valor = 42
print(valor, type(valor))
# continue com float, str e bool
Saída esperada
42 <class 'int'>
3.14 <class 'float'>
'Python' <class 'str'>
True <class 'bool'>
Ver dica
Lembre-se de que True e False são escritos com maiúscula em Python.
Mostrar solução
# Atribuímos valores de tipos diferentes à mesma variável.
valor = 42
print(valor, type(valor)) # int
valor = 3.14
print(valor, type(valor)) # float
valor = "Python"
print(valor, type(valor)) # str
valor = True
print(valor, type(valor)) # bool
Passo a passo
- Começamos com
valor = 42: o nomevalorpassa a apontar para um objetoint. print(valor, type(valor))mostra o valor e a classe exata retornada portype.- Reatribuímos
valor = 3.14; como a tipagem é dinâmica, o nome agora aponta para umfloat. - Em seguida
valor = "Python"faz o mesmo nome apontar para umastr. - Por fim
valor = Trueaponta para umbool; note queTrueé a forma correta (nãotrue).
Por que funciona
Cada atribuição cria um novo objeto e faz o nome valor referenciá-lo. O interpretador não guarda um tipo fixo para o nome, apenas para o objeto. Por isso type(valor) muda a cada linha.
Erros comuns
- Escrever
trueoufalseminúsculos: geraNameError, pois Python usaTrue/False. - Esquecer as aspas em
Python:NameError: name 'Python' is not defined. - Usar
==para comparar tipos em vez deisnão é o erro aqui, mas cuidado:type(valor) == intfunciona;isinstanceé mais flexível.
Outra forma de resolver
Poderíamos usar uma lista e um laço:
for valor in [42, 3.14, "Python", True]:
print(valor, type(valor))
É preferível quando há muitos valores e não precisamos reutilizar o nome depois.
Saída esperada
42 <class 'int'>
3.14 <class 'float'>
'Python' <class 'str'>
True <class 'bool'>