Operações com Tipos Fundamentais


Tipos básicos em Python

Python possui vários tipos de dados básicos ou fundamentais. Esses tipos são parte da linguagem e estão disponíveis para uso imediato. Python também nos permite criar outros tipos, chamados tipos derivados.

Python possui os seguintes tipos fundamentais:

  • int: representa números inteiros.
  • float: representa números de ponto flutuante.
  • bool: representa valores booleanos (verdadeiro ou falso).
  • str: representa strings (cadeias de caracteres).
  • None: representa “ausência de um valor”.

Nesta seção veremos como trabalhar com esses tipos de dados.

Números inteiros

Um dos tipos de dados mais usados em Python são os números inteiros. O exemplo abaixo mostra a criação de variáveis desse tipo.

# Números inteiros
x = 1
y = 2
resultado = x + y
print(resultado)
print(type(resultado))
3
<class 'int'>

Como vimos no exemplo acima, os tipos de variáveis em Python são inferidos automaticamente pelo interpretador, sem que haja a necessidade de se especificar o tipo da variável no momento de sua declaração. Nós não dissemos que x, y e resultado são do tipo int. O interpretador foi capaz de deduzir isso com base nos valores que atribuímos a essas variáveis.

Se usarmos a função type, o interpretador Python nos informa o tipo que ele deduziu para uma determinada variável. Vejamos um exemplo.

x = 42
print(type(x))
<class 'int'>
📌 NOTA

O que é uma variável?

Previamente, dissemos que uma variável é uma forma de se associar um nome a um valor. A forma mais técnica de dizer isso é dizer que uma variável é uma forma de se associar um nome a um objeto, o que nos leva à pergunta: O que é um objeto em Python?

Grosso modo, um objeto é tudo que pode aparecer à esquerda de um sinal de = em Python. Por exemplo, quando fazemos x = 1, estamos criando um objeto chamado x e atribuindo o valor 1 a este objeto.

Em Python, todo objeto possui um tipo. O tipo de um objeto indica o conjunto de valores que o objeto pode assumir. A função type() retorna o tipo do valor passado como parâmetro. No exemplo acima, como a soma x + y possui um valor inteiro, a função type() retorna <class 'int'> indicando que o objeto resultado é de fato do tipo int.

Um objeto também possui um conjunto de operações associado a ele. Por exemplo, um objeto do tipo int possui as operações de +, -, *, etc.

Números de ponto flutuante

Se o nome ponto flutuante te assusta, não se preocupe. Números de ponto flutuante nada mais são que números com vírgula, ou como costumamos dizer “números quebrados”, constrastando com os números inteiros com os quais estamos mais acostumados. Vejamos alguns exemplos de expressões com números de ponto flutuante.

# Números de ponto flutuante
x = 1.1
y = 2.2
resultado = x + y
print(resultado)
print(type(resultado))
3.3000000000000003
<class 'float'>

É importante notar que se pelo menos um dos valores envolvidos em uma expressão numérica for um número de ponto flutuante, o retultado da expressão também será um número de ponto flutuante, como mostrado no exemplo abaixo.

x = 10
y = 2.5
resultado = x * y
print(resultado)
print(type(resultado))
25.0
<class 'float'>

Strings ou cadeias de caracteres

Strings nada mais são do que sequências (cadeias) de caracteres. Em outras palavras, uma string é simplesmente uma sequência de zero ou mais letras juntas. Vejamos alguns exemplos.

string_vazia = ''
uma_letra = 'a'
varias_letras = 'abacate'
print(type(string_vazia))
print(type(uma_letra))
print(type(varias_letras))
<class 'str'>
<class 'str'>
<class 'str'>

Você deve ter percebido que nos exemplos acima, a sequência de letras das strings aparece entre aspas simples. Em Python, assim como em outras linguagens, precisamos das aspas para declarar uma variável do tipo string. Tanto aspas simples quanto aspas duplas funcionam. A razão da necessidade das aspas é simples: elas diferenciam uma declaração de uma variável do string de uma atribuição entre duas variáveis. O exemplo abaixo vai deixar isso mais claro.

v = 'var'
s = v
print(v)
print(s)
var
var

É interessante notar alguns detalhes sobre o trecho de código acima:

  • v = var: Declara uma variável cujo nome é v e atribui o valor var a essa variável.
  • s = v: Diz que o valor da variável s é o mesmo da variável v (atribuição).

Variáveis do tipo NoneType

O termo None é uma forma de representar a “ausência de um valor” em Python. Por exemplo, podemos criar uma variável e inicializá-la com None. Variáveis inicializadas com None possuem o tipo NoneType.

n = None
print(type(n))
<type 'NoneType'>

Daremos mais detalhes sobre como trabalhar com esse tipo de dados posteriormente, mas por agora é suficiente que você saiba da existência dele.

⚠️ CUIDADO

Ausência de valor ou valor None

Se você estiver programando e receber uma mensagem de erro mencionando NoneType, saiba que alguma das variáveis que você está manipulando não possui um valor associado a ela.

Na verdade, tecnicamente, uma variável do tipo NoneType possui um valor, e esse valor é None, mas essa forma de pensar em None como “ausência de um valor” é útil na maioria dos casos.

Variáveis booleanas

Outro nome que representa algo bem simples, mas que costuma assustar as pessoas, é o nome variáveis booleanas. Essas variáveis nada mais são do que uma forma de se armazenar um valor lógico, ou seja, verdadeiro ou falso, que, em Python, são representados como True e False, respectivamente.

No exemplo abaixo, criamos uma variável booleana e imprimimos o valor e o tipo dessa variável.

# Variáveis booleanas (verdadeiro/falso)
a = True
print(a)
print(type(a))
True
<class 'bool'>

Vejamos mais alguns exemplos do uso de operações lógicas com variáveis booleanas.

# Exemplos de operações lógicas

# Exemplo de comparação de inteiros.
# Neste exemplo, 'a' é uma variável booleana,
# pois armazena o resultado de uma operação lógica.
a = 4 > 0
print(a)

# Strings são comparadas lexicograficamente, ou seja,
# em ordem alfabética, letra por letra.
b = "abacate" > "banana"
print(b)

# Expressões lógicas podem envolver muitas variáveis.
# Elas podem também ser combinadas para produzir
# expressões mais complexas.
x = y = 7
print(x <= y and y <= x)
True
False
True

Existem alguns detalhes importantes sobre o exemplo acima:

  • Neste exemplo, a variável a armazena o resultado da comparação 4 > 0. Uma outra forma de se interpretar a expressão a = 4 > 0 é o seguinte: se 4 for maior que 0, armazene o valor True na variável a. Caso contrário, armazene o valor False nessa variável. No nosso exemplo, como 4 é de fato maior que 0 (ou seja, o resultado da comparação é um valor lógico verdadeiro), a variável a recebe o valor True.
  • Como a letra a vem antes de b no alfabeto, a palavra “abacate” é menor que “banana”, portanto a variável b recebe o valor False. Neste tipo de comparação, caso a primeira letra das palavras seja igual, a segunda letra das palavras é comparada, e assim por diante.
  • Como x e y são iguais, a comparação é verdadeira nos dois casos, o que faz com que a expressão como um todo seja verdadeira.

Conversão de tipos

O exemplo acima mostra uma conversão implícita entre tipos. Apesar de a expressão envolver uma variável do tipo int (a variável x) e uma variável do tipo float (a variável y), o resultado da expressão x * y é implicitamente convertido para o tipo float.

Existem também conversões explicitas de tipos em Python. Por exemplo, se quisermos que o resultado a expressão acima seja um número inteiro, podemos “forçar” que isso aconteça usando uma conversão explicita de dados:

x = 10
y = 2.5
resultado = int(x * y)
print(resultado)
print(type(resultado))
25
<class 'int'>

Um tipo particular de conversão efetuado com frequência são as conversões de/para variáveis booleanas. Para converter um valor para um valor booleano, usamos a função bool, como ilustrado abaixo.

# Conversões de inteiros para booleans
a = bool(0)
print(a)

b = bool(1)
print(b)

c = bool(20)
print(c)

d = bool(-20)
print(d)

# Conversões de floats para booleans
e = bool(0.0)
print(e)

f = bool(3.14)
print(f)
False
True
True
True
True
False

O valor zero possui valor lógico False. Todos os outros valores inteiros (inclusive números negativos) possuem o valor lógico True.

Outras conversões também são possíveis, como mostrado no próximo exemplo:

# Converte inteiro para string
x = 10
s = str(x)
print(s)

# Converte float para inteiro
a = 2.5
b = int(a)
print(b)

# Converte inteiro para float
c = 2
d = float(c)
print(d)
10
2
2.0

Nesta seção, aprendemos como trabalhar com os chamados tipos fundamentais em Python. Esses tipos são extremamente úteis e são usados constantemente, então é importante que você entenda como manipulá-los.

Até aqui estamos lidando com os aspectos bem básicos da linguagem. A partir de agora começaremos a escrever pequenos programas para realizar tarefas mais complexas e interessantes.