2. Tipos de dados fundamentais#
Tipos numéricos#
Int (inteiro)#
São valores que representam números inteiros, positivos ou negativos, sem casas decimais. Normalmente os utilizamos como contadores, índice ou quantidades discretas.
Exemplos: -5, 0, 25, 1000
numero_de_alunos = 30
ANO_NASCIMENTO = 2005
saldo_gols = -3
Float (ponto flutuante)#
Representa números reais, ou seja, números com casas decimais. Podem, até mesmo, ser expressos em notação ciêntífica (ex: 2.5e2 para representar 250.0).
São usados em Medidas, cálculos financeiros, qualquer valor que possa ter frações. Entretanto, números de pontos flutuantes têm uma precisão limitada devido à forma como são armazenados no computador. Para cálculos financeiros que exigem precisão exata, é mais indicado utilizar o módulo decimal
.
Exemplos: 2.14158, -0.002, 2.0, 7.89e3
preco_produto = 19.99
PI = 3.14159
temperatura = -3.2
Complex (complexo)#
Representa números complexos, que têm uma parte real e uma parte imaginária (geralmente indicada por j
em Python). É usada principalmente em domínios científicos e de engenharia elétrica. Para o dia a dia da maioria dos desenvolvedores, não é tão comum.
Exemplos: 3+5j, 2-8j, 2j
numero_complexo = 2 + 3j
print(numero_complexo.real) # Saída: 2.0
print(numero_complexo.imag) # Saída: 3.0
2.0
3.0
Atenção: Como esse é um curso introdutório, não iremos focar muito nos números complexos.
Tipo de Texto#
Str (string)#
Representa sequências de caracteres, ou seja, texto. Strings podem ser delimitadas por aspas simples (' '
) ou aspas duplas (" "
). Existe também as aspas triplas (''' '''
ou """ """
) que servem para que o texto ocupe múltiplas linhas. Strings são usadas para armazenar nomes, mensagens, caminhos de arquivos, qualquer tipo de dado textual.
Exemplos:
saudacao = "Olá, mundo!"
nome = 'Maria'
paragrafo = """Este é um texto
que ocupa múltiplas
linhas."""
Curiosidade: Um fato interessante é que, em Python, strings são imutáveis. Isso significa que, uma vez criada, uma string não pode ser alterada. Qualquer operação que pareça modificar uma string, na verdade, cria uma nova string.
Operações básicas#
É possível realizar algumas operações com strings, são elas:
Concatenação (+): Juntar strings;
primeiro_nome = "João"
sobrenome = "Silva"
nome_completo = primeiro_nome + " " + sobrenome
print(nome_completo)
print("Pedro " + "Miguel") # Você também pode fazer a concatenação dentro da função print
João Silva
Pedro Miguel
Repetição (
*
): Repete strings num determinado número de vezes;
spam = "Span"
print("-" * 10) # Aqui o símbolo de multiplicação (*) deve sempre está acompanhado de um número e uma string
print(spam * 5) # Ou pode ser uma variável que armazena uma string e um número
----------
SpanSpanSpanSpanSpan
Indexação: Permite acessar um caractere específico pela sua posição (índice, começando em 0). Observação: O índice sempre deve está entre couchetes
[]
;
letra_p = "Programador"
print(letra_p[0]) # O índice 0 representa a primeira letra da palvra (p)
P
Fatiamento (slicing): Permite obter uma parte específica da string. É realizado entre colchetes
[]
, juntamente com índices que especificam o início e o fim do intervalo que queremos fatiar.
ola_mundo = "Olá Mundo"
ola = ola_mundo[:3]
mundo = ola_mundo[4:]
print(ola)
print(mundo)
Olá
Mundo
Observe que nesses fatiamentos, ignoramos o índice de ínicio na primeira variável (ola
) e o último índice da variável (mundo
), fizemos isso por que já sabíamos que o primeiro fatiamente começaria pelo índice 0
, então não precisaríamos declará-lo, já no segundo fatiamente como ele iria até o último índice, não precisamos definí-lo.
Tipo Booleano#
Representa um dos dois valores de verdade: True
(verdadeiro) ou False
(falso). É comumente usado em expressões lógicas, estruturas de controle (como if
ou while
) para tomar decisões no programa.
Exemplos:
tem_permissao = True
login_falhou = False
Contexto Booleano#
Muitos valores em Python podem ser avaliados como True
ou False
em um contexto booleano:
Falsos (false):
None
,False
,0
(zero de qualquer tipo numérico), sequências vazias(''
,[]
,()
,{}
), mapeamento vazios({}
).Verdadeiros (true): Quase todo o resto.
Tipo None#
É um tipo especial que tem um único valor: None
.
Ele representa a ausência de um valor ou um valor nulo. É frequentemente usado para indicar que uma variável não tem um valor atribuido ainda, ou que uma função não retorna nada explicitamente.
É usado como valor padrão para argumentos de função, para indicar um resultado “não encontrado”, para inicializar variáveis antes que recebam um valor real.
variavel_sem_valor = None
print(variavel_sem_valor)
None
Observações: Ainda há outros tipos de dados, como tipos sequenciais e mapeamento, entretanto, iremos vê-los apenas mais tarde.
Extra: Verificando e Convertendo Tipos#
Às vezes será necessário saber o tipo de uma variável ou conventer uma variável para outro tipo. Neste tópico abordaremos esses pontos afim de um melhor entendimento sobre os tipos de dados.
Verificando o Tipo#
Como já vimos anteriormente, a função embutida type()
é usada para verificar o tipo de um objeto/variável.
numero = 10
texto = "Python"
print(type(numero)) # Saída: <class 'int'>
print(type(texto)) # Saída: <class 'str'>
<class 'int'>
<class 'str'>
Vimos que dentro dos parênteses deve ficar a variável/objeto que desejamos verificar o tipo e que o class
contido nos resultados é usado no sentido de categoria (um tipo é uma categoria de valores).
Agora vamos um pouco além, vamos aprender a utilizar a função embutidade isintance(objeto, tipo)
para verificar se um objeto é de um tipo específico ou de uma classe que herda esse tipo (mais relevante quando formos aprender sobre orientação a objetos).
print(isinstance(numero, int)) # Saída: True
print(isinstance(texto, float)) # Saída: False
True
False
Dentro da função isistance(objeto, tipo)
recebe dois argumentos (ou parâmetros):
Objeto:
Variável/objeto
a ser verificado;Tipo: A classe, tipo ou uma tupla de classes/tipos a que você quer comparar a
variável
.
Quanto ao retorno, só existem dois resultados possíveis para essa função, são eles:
True
: Se avariável
for uma instância daclasse/tipo
fornecida;False
: Caso avariável
não seja uma instância daclasse/tipo
fornecida.
Ao decorrer do curso veremos como essa função pode ser útil para sabermos de um objeto pertence a uma determinada classe
, ou verificar se a variável pertence a vários tipos usando uma tupla
.
Convertendo Tipos#
Python oferece funções embutidas para converter valores de um tipo para outro. Isso é chamado de “type casting” ou “type conversion”.
Para converter valores em Python é bem simples, basta você declarar o tipo que você deseja que a variável passe a ter como uma função (tipo_desejado()
) e dentro do parênteses ()
indicar a variável/objeto que deve ter o valor convertido.
Convertendo em tipos numéricos#
Para converter valores para int
ou float
, basta usá-los como funções, fazendo-os ficarem assim: int()
e float()
. Dentro dos parênteses basta colocar a variável/obejto ou valor que se deseja converter.
dado_float = 1.85
dado_int = 20
converter_para_int = int(dado_float) # converte o float para inteiro
converter_para_float = float(dado_int) # converte inteiro para float
print(converter_para_int, type(converter_para_int)) # Saída: 1 <class 'int'>
print(converter_para_float, type(converter_para_float)) # Saída: 20.0 <class 'float'>
1 <class 'int'>
20.0 <class 'float'>
Observe que ao converter um int
para float
, ele apenas adiciona um ponto flutuante ao valor original, já quando converte-se float
para int
, a parte decimal do número é cortado, sobrando apenas o 1.
Atenção: Em Python, quando converte-se valores de ponto flutuante para inteiro, o valor não será arredondado, mas sim terá sua parte decimal cortada.
Curiosidades: Também é possível converter tipos booleanos e algumas strings em valores númericos. Veremos mais sobre isso adiante.
Convertendo String em números#
É possível converter strings para valores números desde que a string contenha apenas números, veja:
dado_string = "123"
outra_string = "3.14"
converter_para_int = int(dado_string) # converte o string para inteiro
converter_para_float = float(outra_string) # converte o string para float
print(converter_para_int, type(converter_para_int)) # Saída: 123 <class 'int'>
print(converter_para_float, type(converter_para_float)) # Saída: 3.14 <class 'float'>
123 <class 'int'>
3.14 <class 'float'>
Observe que as strings foram convertidas para valores numéricos, que pode ser atestado pelo uso da função type()
. Entretanto, se tentarmos converter uma string que possua texto para valores numéricos, um erro ocorre:
dado_string = "abc123"
converter_para_int = int(dado_string)
converter_para_float = float(dado_string)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[15], line 3
1 dado_string = "abc123"
----> 3 converter_para_int = int(dado_string)
4 converter_para_float = float(dado_string)
ValueError: invalid literal for int() with base 10: 'abc123'
Atenção: Value error indica que a função de conversão recebeu um valor inválido para a operação específica, no caso converter letras para valores numéricos.
Convertendo booleanos em números#
Também podemos converter valores booleanos em valores númericos, isso ocorre por que em Python, por padrão, True
equivale a 1 e False
equivale a 0. Veja:
dado_true = True
dado_false = False
converter_true = int(dado_true) # converte True em número
converter_false = float(dado_false) # converte False em número
print(converter_true, type(converter_true)) # Saída: 1
print(converter_false, type(converter_false)) # Saída: 0.0
1 <class 'int'>
0.0 <class 'float'>
Convertendo em tipos textuais#
Para converter valores em string
é bem simples, basta usar a função str()
e dentro do parênteses indicar qual variável/objeto ou valor deve-se ser convertido.
Basicamente dá para converter qualquer tipo de dado em strings, veja:
dado_int = 22
dado_float = 10.45
dado_bool = True
converter_int_para_string = str(dado_int)
converter_float_para_string = str(dado_float)
converter_bool_para_string = str(dado_bool)
print(converter_int_para_string, type(converter_int_para_string)) # Saída: 22 <class 'str'>
print(converter_float_para_string, type(converter_float_para_string)) # Saída: 10.45 <class 'str'>
print(converter_bool_para_string, type(converter_bool_para_string)) # Saída: True <class 'str'>
22 <class 'str'>
10.45 <class 'str'>
True <class 'str'>
Observe que os valores convertidos não possuem uma mudança visual que os diferencie de como eram antes de serem convertidos, eles apenas deixaram de possuir as propriedades que tinham anteriormente a passaram a ter características de strings.
Convertendo em tipos booleanos#
Para converter valores em booleano
é bem simples, basta usar a função bool()
e dentro do parênteses indicar qual variável/objeto ou valor deve-se ser convertido.
Em resumo, se a variável possuir algum valor que seja vazio, nulo ou zero, ela será convertida para False
, do contrário será True
.
dado_string = "123"
nova_string = ""
converter_str_em_bool =bool(dado_string)
novs_conversao = bool(nova_string)
print(converter_str_em_bool)
print(novs_conversao)
True
False
Quando foi falado anteriormente no contexto booleano, qualquer tipo de dado que possua algum valor dentro de si é considerado True
e dados sem valores ou com valores nulos são False
. Veja o exemplo acima, uma string como valores dentro (“123”) possui um valor verdadeiro (true), enquanto uma string vazia, sem nenhum valor dentro das aspas ""
, possuí o valor falso (false).
veja agora outros exemplos:
dado_string = 123
nova_string = 0
converter_str_em_bool =bool(dado_string)
novs_conversao = bool(nova_string)
print(converter_str_em_bool)
print(novs_conversao)
True
False
Como zero é considerado “sem valor”, ele acaba sendo convertido como False, enquanto outros números são convertidos como True, como é o caso de 123.
Parabéns: Você terminou o módulo 02 do curso de introdução à python. Agora você sabe sobre os tipos de dados básicos e está pronto para começar novos projetos, então mãos à obra.