• Python
  • 03. Entrada e saída do terminal
  • Tipos de dados em Python

Tipos de dados em Python#

Vimos na aula passada que podemos guardar qualquer coisa em variáveis no Python. O que nós não discutimos foi que essas "coisas" que podemos guardar nas variáveis possuem tipos específicos. No início vamos trabalhar com 4 tipos básicos:

  • Inteiro (int): um número sem casa decimal. Ex: 34, 96, -123, 45;
  • Float (float): um número real, com "ponto decimal" (também chamamos de "ponto flutuante"). Ex: 3.14, -25.1, 5.0, 5e-1;
  • String (str): texto puro (é representado necessariamente com aspas simples ou duplas). Ex: "Hello, world!", 'Insper', '3.14', '"oi"';
  • Booleano (bool): representam "verdadeiro" (True) e "falso" (False).

Conversão entre tipos

O Python disponibiliza algumas funções que convertem um valor de um tipo para outro.

Exercise 1

Considere o código a seguir:

# Converte para string.
print(str(123) + '4')

O que foi impresso no terminal?

Answer

O comando str(123) converte o número 123 para a string '123'. Ao utilizar o operador de soma (+) entre duas strings, o resultado será 1234. Na computação, dizemos que as strings 123 e 4 foram concatenadas.

Parece que vimos algo parecido no código do EXERCÍCIO 01. Ao pedir dois valores utilizando o comando input e passando esses dois valores para a função soma, tivemos como resultado a concatenação de duas strings.

Exercise 2

Considere o código a seguir:

# Converte de string para int.
print(int('14') + 28)

O que foi impresso no terminal?

Answer

O comando int('14') converte a string '14' para o número inteiro 14. Como o valor 28 é um número inteiro, o resultado da operação de soma entre os números 14 e 28, resulta no número inteiro 42.

Então aqui, temos uma dica do que podemos utilizar para consertar nossoo código.

Exercise 3

Agora vai!

Altere o código para pedir dois valores para o usuário e imprimir a soma destes dois valores da forma correta.

Lembre-se que o input() sempre devolve uma string, ou seja, mesmo o usuário digitando no terminal valores numéricos, o Python considera esses valores como sendo do tipo string.

Exercise 4

Qual dos códigos abaixo faz o que foi pedido no exercício acima?

Answer

A forma correta de converte para inteiro o valor recebido pelo comando input é int(input('Entre com o primeiro número: ')).

O comando input(int('Entre com o primeiro número: ')) é muito similar a forma correta, porém, podemos perceber que a ordem do comando int e input estão invertidas.

O comando int(soma(a, b)) converte para inteiro o valor devolvido pela função soma. E como os valores de a e b são strings, então a função soma devolve o resultado da concatenação das strings armazenadas nas variáveis a e b.

Agora vamos continuar explorando tipos de variáveis em Python.

Exercise 5

Crie um novo arquivo testes_float.py na pasta deste handout e use-o nos próximos exercícios. Assim não perdemos o programa testes_soma.py criado nos últimos exercícios.

Exercise 6

Digite o código a seguir em testes_float.py e execute. O que aparece no terminal?

# What ?!?
print(float('BANANA'))

O que foi impresso no terminal?

Answer

Ao executar o código float('BANANA'), o interpretador Python não sabe como fazer a conversão da string BANANA para um número float.

Exercise 7

Qual foi o erro que o interpretador Python informou ao executar o código print(float('BANANA'))?

Answer

Seu programa deve ter apresentado um erro parecido com o seguinte: ValueError: could not convert string to float: 'BANANA'. Será muito comum encontrarmos erros em nosso programa. A primeira dica é: não entre em pânico. A segunda é: leia a mensagem de erro com atenção.

Exercise 8

Considero o código a seguir. Execute-o.

# Converte para float.
print(float(4))

O que foi impresso no terminal?

Answer

Será impresso 4.0 no terminal. Ao converter o número inteiro 4 para um número em ponto flutuante, o interpretador Python adiciona o ponto e o zero ao número.

Exercise 9

Considero o código a seguir. Execute-o.

# Converte de string para float.
print(float('1.625') + 0.1)

Answer

O comando float('1.625') converte a string '1.625' para o número do tipo float 1.625. Como o valor 0.1 é um número do tipo float, o resultado da operação de soma entre os números 1.625 e 0.1, resulta no valor 1.725.

Exercise 10

Considero o código a seguir. Execute-o.

# Converte para inteiro.
print(int(3.14))

O que foi impresso no terminal?

Answer

O comando int(3.14) gerou o número inteiro 3. Mas será que ele arredondou o valor? 🤔

Exercise 11

Teste o comando int(2.718). Assumindo que a função int() arredonda o valor, o resultado esperado seria 3. Qual foi o resultado?

Answer

O valor obtido foi 2. O que isso diz sobre a função int?

Ao converter o número 2.718 para um número inteiro, estamos desconsiderando o valor depois do ponto. Desta forma, obtemos o valor 2 como resultado da conversão para int.

Exercise 12

# Função que soma dois números.
def soma(x, y):
    z = x + y
    return z

# Lendo os dois números.
a = int(input('Entre com o primeiro número: '))
b = int(input('Entre com o segundo número: '))

# Somando os dois números.
resultado = soma(a, b)
print(resultado)

Se ao executar o código acima, o usuário digitar os números 3.14 e 2.718, qual será o resultado impresso no terminal?

Answer

Quando o usuário informa o primeiro valor (3.14), o interpretador Python devolve a seguinte mensagem no terminal: ValueError: invalid literal for int() with base 10: '3.14'.

Isso ocorre, porque estamos passando um valor do tipo string para o comando int. Porém, essa string não pode ser convertida imediatamente para um número inteiro, pois possui casas decimais.

Exercise 13

Corrija o programa do exercício anterior para que ele seja capaz de receber números do tipo float.