The Beauty of Python

A little bit of Python – A linguagem dos dados

O que é variável em Python?

Antes de falarmos sobre o que é variável em Python, é importante relembrarmos o seu conceito. Na prática, uma variável corresponde a um espaço endereçável na memória (RAM) do computador que é alocada durante a execução do programa para armazenar um determinado valor que poderá ser utilizado várias vezes em um programa.

O conteúdo armazenado em uma variável pode ser de diferentes tipos de dados, como strings, inteiros, booleano etc. Uma das características mais importantes das variáveis em Python é que elas indicam a referência a um objeto, ou seja, qualquer variável representa um objeto.

Na prática, ao declararmos uma variável, ela aloca um espaço em memória para armazenar o valor correspondente e guarda o endereço desse espaço na variável. Assim, ao utilizarmos a variável em outro momento, ela recupera o conteúdo correspondente armazenado na memória referente àquele objeto. Veja um exemplo:

nomes = ['João', 'Maria', 'Pedro']
lista_nomes = nomes
lista_nomes.append('Paula')

print(lista_nomes)
#Resultado: ['João', 'Maria', 'Pedro', 'Paula']

print(nomes)
#Resultado: ['João', 'Maria', 'Pedro', 'Paula']

No código acima, criamos uma lista chamada “nomes” com 3 itens. A seguir, dizemos que a variável “lista_nomes” recebe os valores de “nome”. Por fim, exibimos na tela o conteúdo das duas variáveis. Perceba que mesmo sem atualizar o conteúdo da variável “nome”, ela reflete as alterações feitas em “lista_nomes”.

Isso acontece exatamente porque ela armazena a referência do espaço em memória em que a lista foi criada. Dessa forma, quando alteramos a lista para adicionar mais um elemento, todas as variáveis que apontam para esse espaço em memória refletirão essa atualização.

É importante dizer que existem tipos de dados mutáveis, que aceitam a alteração de seu conteúdo original e imutáveis, que alocam um novo espaço na memória sempre que uma alteração é feita. Assim, os dados de variáveis imutáveis ficam como que perdidos na memória até que um recurso chamado coletor, que funciona como um coletor de lixo, faça a limpeza desse conteúdo.

Quais os tipos de dados Python

Em Python, não é necessário inicializar uma variável como acontece em outras linguagens de programação. Ao atribuir um valor qualquer a ela, ele será identificado de acordo com os tipos de dados disponíveis na linguagem. Confira quais são eles nos próximos tópicos.

a) Inteiros

O tipo inteiro representa os números não decimais positivos ou negativos e de tamanho ilimitado. Para uma variável ser considerada do tipo inteiro, basta atribuir um valor com essas características a ela ou indicar o tipo antes de atribuir o valor. Veja um exemplo:

a = 1
b:int = 1
print(type(a)) #Resultado: <class 'int'>
print(type(b)) #Resultado: <class 'int'>

b) Long

O tipo long pertence ao conjunto de tipos numéricos inteiros de tamanho ilimitado. Na prática, esse tipo de dado em Python só é utilizado até a versão 2.x da linguagem. A partir da versão 3.x, todas as variáveis declaradas como inteiro podem ter o tamanho ilimitado.

c) Float

O tipo float, que é chamado de número de ponto flutuante, também faz parte dos tipos numéricos e é representado pelos números que contêm uma ou mais casas decimais. Veja um exemplo:

i = 199.90
print(i) #Resultado: 199.9
print(type(i)) #Resultado: <class 'float'>

d) Bool

O tipo bool é representado por uma entre duas possibilidades de valores, são eles: True ou False, que indica verdadeiro ou falso. Além de declarados em variáveis, os valores do tipo bool são utilizados para comparar e avaliar expressões. Confira o exemplo abaixo:

i = 10
resultado = (i == 10)
print(resultado) #Resultado: True

print(i == 10) #Resultado: True
print(i >= 10) #Resultado: True
print(i < 10) #Resultado: False

e) None Type

O tipo None pertence à classe NoneType e é um objeto utilizado para indicar valores nulos. Na prática, ele é uma palavra-chave que indica, por exemplo, que uma determinada variável não contém nenhum valor. É importante dizer que None é diferente de uma string vazia, de um número inteiro igual a zero ou do valor bool igual a False.

Podemos atribuir o valor None a qualquer variável para indicar que ela não tem um valor específico. Ele também pode ser utilizado para analisar expressões. Veja o código a seguir:

print(type(None)) #Resultado: <class 'NoneType'>
i = None
a = i
print(i == a) #Resultado: True
print(i == None) #Resultado: True
print(a == None) #Resultado: True

print(type(a)) #Resultado: <class 'NoneType'>
print(type(i)) #Resultado: <class 'NoneType'>
print(i == False) #Resultado: False
print(i == 0) #Resultado: False

f) String

Em Python, o tipo string funciona como um array de caracteres. Por isso, é possível acessar cada caractere por meio de seu índice correspondente. Para declarar uma string, basta informar o conteúdo delimitado por aspas ou aspas dupla. Veja um exemplo:

nome = 'João da Silva'
print(nome) #Resultado: João da Silva
print(type(nome)) #Resultado: <class 'str'>

Estruturas condicionais em Python: if, elif e else

Toda linguagem de programação precisa ter estruturas condicionais, que são comandos utilizados para verificar se uma expressão é verdadeira ou falsa e executar determinados blocos de código em cada situação específica. Confira como a estrutura ifelif e else funcionam em Python.

if/else

O comando Python if é utilizado para verificar a condição de uma expressão e executar ou não um determinado bloco de código. A instrução if pode ser executada sozinha ou em conjunto com a instrução else, que possibilita a execução de outro conjunto de códigos caso a condição avaliada seja falsa.

Veja a sintaxe no pseudocódigo a seguir:

if <condicao_verdadeira>:
   <bloco_de_codigo>
else:
   <outro_bloco_de_codigo>

É importante dizer que em Python não há a necessidade de delimitar o bloco de códigos com as chaves de abertura e fechamento: “{“ e “}”, como acontece em outras linguagens de programação. Na prática, basta adicionar o caractere de dois pontos “:” após a expressão. Veja um algoritmo de exemplo de código com a estrutura Python if else:

nome = 'João'
if nome == 'João':
    print(True)
else:
    print(False)
#Resultado: True

if/elif/else

Existem situações em que pode ser necessário avaliar outra condição caso a primeira expressão seja falsa. Nesse cenário, podemos utilizar a instrução elif, que avalia se outra condição é verdadeira. Veja a sintaxe abaixo:

if <condicao_verdadeira>:
    <bloco_de_codigo>
elif <nova_condicao_verdadeira>:
    <novo_bloco_de_codigo>
else:
    <outro_bloco_de_codigo>

Também podemos usar o comando else para executar outro bloco de códigos se a condição não for satisfatória. Veja o código de exemplo abaixo:

numero = 20
if numero < 10:
    print(True)
elif numero == 20:
    print("O número é igual a 20")
else:
    print(False)
#Resultado: O número é igual a 20

No código acima, verificamos se o número é menor que 10. Caso não seja, avaliamos novamente se ele é igual a 20. A seguir, retornamos uma mensagem na tela para cada condição específica.

Retornando uma sequência de números: função Python range

A função Python range é utilizada para criar uma sequência numérica. Podemos determinar qual será o valor inicial, o ponto de parada e o valor utilizado para incrementar a lista, que por padrão é 1. 

Trata-se de um recurso útil para servir como contador em estruturas de repetição, por exemplo, ou para aplicar em variáveis quando precisamos utilizar números sequenciais como listas ou tuplas. Veja o código a seguir:

numeros = list(range(11))
print(numeros)
#Resultado: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(0, 11, 2):
    print(i)

'''
resultado:
0
2
4
6
8
10
'''

No código acima, utilizamos a função range() para criarmos uma lista com 10 elementos e, também, em uma estrutura de repetição for para servir como contador para imprimirmos os números pares no intervalo de 0 a 10.

Laço de repetição Python for

Python for loop é utilizado para executar um determinado bloco de comandos a partir da avaliação de uma expressão feita em variáveis iteráveis. Vale ressaltar que elementos iteráveis são aqueles que podem ser manipulados de forma sequencial pelas funções __next__() e __iter__(), como strings, listas ou tuplas. Veja a sintaxe abaixo:

for <elemento> in <conjunto_de_elementos>:
    <bloco_de_codigo>

Veja um código de exemplo:

lista_linguagens = ['Python', 'C', 'Java', 'JavaScript']
for linguagem in lista_linguagens:
    print(linguagem)

'''
Resultado:
Python
C
Java
JavaScript
'''

No código acima, definimos uma lista com 4 linguagens de programação. A seguir, utilizamos a estrutura de repetição for para percorrer todos os elementos da lista e exibi-los na tela.

Laço de repetição Python while 

A estrutura de repetição Python while é utilizada quando é preciso executar um bloco de códigos repetidas vezes enquanto uma determinada condição for verdadeira. Ao utilizar esse recurso, entretanto, é preciso atenção para garantir que exista um ponto de interrupção que indique o término da execução em loop. Veja a sintaxe:

while <condicao_verdadeira>:
    <bloco_de_codigo>
else:
    <outro_bloco_de_codigo>

Confira um código de exemplo:

linguagem = 'Python'
i = 0
while (i < len(linguagem)):
    print(linguagem[i])
    i += 1

'''
Resultado:
P
y
t
h
o
n
'''

No código acima, utilizamos o loop while para percorrer o conteúdo de uma string e exibir cada caractere na tela. Perceba que utilizamos a variável “i” como contador, como índice para acessar cada caractere da string e como ponto de parada para o laço while.

Armazenando itens em uma única variável: Python list

Python list é uma estrutura de dados utilizada para armazenar diversos valores em uma única variável. Seus elementos são organizados sequencialmente e acessados por meio do índice correspondente ao item ou por meio de métodos para a manipulação de listas disponíveis na linguagem.

É possível armazenar diversos tipos de dados em uma lista, como strings, inteiros, bool e, inclusive, outras listas. Os elementos de uma lista são delimitados pelos sinais de colchetes: “[“ e “]”. Veja um exemplo:

lista_pessoas = ['João', 23, ['Python', 'JavaScript']]
print(lista_pessoas) #Resultado: ['João', 23, ['Python', 'JavaScript']]
print(type(lista_pessoas)) #Resultado: <class 'list'>

Gerando números pseudo aleatórios: Python random

O módulo Python random é utilizado quando queremos gerar números pseudo-aleatórios, que são semelhantes a números aleatórios, entretanto, são produzidos por meio de algoritmos que utilizam um valor de base para gerar outros valores aleatórios. 

Esse é um recurso muito utilizado em algoritmos de cálculos estatísticos e de teorias de probabilidade, por exemplo. Além disso, o módulo random contém uma série de métodos auxiliares. Para utilizar esse recurso, devemos importar o módulo no código correspondente. É importante dizer que ao utilizar a mesma base e depurarmos o programa, o resultado gerado será sempre o mesmo. Veja um pequeno exemplo:

import random # necessário para utilizar o módulo random
 
random.seed(20)
print(random.random()) # resultado: 0.9056396761745207
print(random.random()) # resultado: 0.6862541570267026
 
random.seed(20)
print(random.random()) # resultado: 0.9056396761745207
print(random.random()) # resultado: 0.6862541570267026

Conheça alguns métodos de string do Python

A linguagem Python oferece uma série de métodos para facilitar a manipulação de variáveis do tipo string. É importante lembrar que a string é imutável, portanto, qualquer alteração em seu conteúdo será armazenada em uma nova variável. Confira alguns métodos a seguir.

a – Separando strings em substrings e retornando em listas: split

O método split() é utilizado para dividir uma string em uma ou várias substrings. O resultado obtido é retornado em formato de lista. Por padrão, o separador sempre é considerado o caractere de espaço, entretanto, podemos definir outro caractere, além de determinar a quantidade de elementos que queremos na lista. Veja um exemplo:

linguagens_de_programacao = 'Python JavaScript C Ruby'
lista_linguagens = linguagens_de_programacao.split()

print(lista_linguagens) #Resultado: ['Python', 'JavaScript', 'C', 'Ruby']
print(type(lista_linguagens)) #Resultado: <class 'list'>

Perceba que na variável “lista_linguagens” dividimos a string “linguagens_de_programação” com a função split() e ela separou os elementos de acordo com o caractere de espaço encontrado.

b – Substituindo substrings dentro de uma string: python replace

Outro método disponível para a manipulação de string é o Python replace(). Na prática, ele cria uma nova string com a alteração indicada na função, que tem três parâmetros. Veja a sintaxe:

string.replace(oldvalue, newvalue, count)

Os parâmetros oldvalue e newvalue são obrigatórios e indicam respectivamente o valor anterior e o novo conteúdo. Já o parâmetro count é opcional e indica o número de vezes que a alteração será realizada. Veja um exemplo:

linguagens_de_programacao = 'Python JavaScript C Ruby'
linguagens = linguagens_de_programacao.replace(' ', '-')
print(linguagens) #Resultado: Python-JavaScript-C-Ruby
print(type(linguagens)) #Resultado: <class 'str'>

No código acima, utilizamos a função replace() para trocar o caractere de espaço pelo caractere hífen.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *