Programação | Python — Parte 1

Lucas Fentanes Machado
Turing Talks
Published in
9 min readMay 19, 2019

Uma introdução a uma das linguagens de programação mais utilizadas no mundo

Provavelmente você já ouviu falar sobre Python. Em alguma notícia, post ou em alguma aula ou videoaula, por exemplo. Ainda mais agora, com o enorme crescimento de áreas como Data Science e Machine Learning. Neste meio, o Python figura como uma das principais e mais usadas ferramentas para desenvolvimento de tecnologias deste tipo. Além disso, é uma linguagem de fácil compreensão e com uma sintaxe muito mais leve do que, por exemplo, o C.

O Python é uma linguagem de programação de alto nível interpretada (e não compilada), que dá suporte a coisas como orientação a objetos e até programação funcional, ou seja, o programador pode escolher qual paradigma de programação irá usar, diferentemente de linguagens como Java ou C. Isso fornece uma enorme liberdade ao programador para variar entre vários “estilos”.

O objetivo deste post não é descrever ou realizar uma comparação generalista entre linguagens de programação, mas sim servir como uma introdução ao seu aprendizado de Python. Este texto poderá servir como uma ótima ferramenta para a leitora ou leitor que deseja aprender esta linguagem, entretanto não sabe por onde começar. É recomendado um conhecimento básico de lógica de programação e talvez alguma pequena experiência com outra linguagem no passado. (Caso o leitor não possua nenhum dois dois, sugiro que leia mesmo assim).

Para que o tutorial não ficasse tão longo, foi divido em duas partes. Partiremos de conceitos básicos como quais são os tipos de variáveis, como printar coisas na tela, como fazer loops (se você ainda não sabe o que é isso, não se preocupe, explicaremos na próxima parte do tutorial), até outros mais complexos, como bibliotecas e frameworks muito úteis para aplicações.

Bom, vamos ao tutorial!

IMPORTANTE: Todo este tutorial está baseado na versão 3 do Python. Algumas funções esclarecidas aqui tem comportamentos diferentes na versão 2 do Python.

Aqui está um tutorial para instalação do Python 3 (tanto para Windows quanto para Linux): https://realpython.com/installing-python/.

Conceitos básicos

  • Como dito anteriormente, em geral, o Python possui uma sintaxe simplificada e com menos restrições do que outras linguagens.
  • O símbolo de hashtag (#) que não está dentro de aspas (duplas ou simples) representa o início de um comentário de uma única linha. Para comentários de múltiplas linhas, podem ser utilizadas aspas, embora também sejam utilizados hashtags. Comentários servem para indicar e explicar operações em seu código.
  • Em Python, não é necessário usar pontuação (como ;) no fim de cada linha de código (embora em algumas instâncias como funções elas sejam utilizadas).
  • Em Python, não é necessário especificar o tipo de variável (não precisa dizer se ela é int, float, etc.) ao criá-la.
  • Em Python não é utilizado { } para delimitar operações como if, while e for, ao invés disso é utilizado “:” e indentação correta na próxima linha.

Para melhor entendimento dos pontos listados acima, aqui vai uma boa comparação:

Escrever em C é como escrever: If the (integer) time is past (integer) 9 put on some (adjective) work (noun) clothes.

Escrever em Python é como escrever: If the time is past 9 put on some work clothes.

Agora que entendemos as características mais básicas do Python, vamos para a parte mais técnica.

Variáveis, atribuições e operações

Um dos elementos mais básicos presentes nas linguagens de programação de alto nível é a variável. A variável tem o objetivo de guardar algum valor que seja relevante ao programador e trata-se de uma posição reservada na memória para este fim. Este valor pode ser de diversos tipos como:

  • Texto (String): Por exemplo, posso guardar a frase “Olá mundo!”.
  • Inteiros (int): Valores do tipo: 13123, 0, -12334…
  • Decimais ou Flutuantes (float): Tipo que representa os valores reais.
  • Booleano (Boolean): Variável booleana, pode assumir valores 1 ou 0 (Verdadeiro ou Falso).

O Python possui uma função nativa que retorna o tipo de uma variável: type(). Podemos usá-la para verificar o tipo das varáveis com as quais estamos trabalhando.

Existem diversos outros tipos que você pode encontrar em Python e em linguagens tipadas como C, Java ou C++, porém esses são os mais importantes. Como se pode ver, em Python não fica explícito o tipo da variável. Isso significa que ao declarar uma variável não é necessário que se explicite seu tipo, mas é importante que você tenha noção da existência dessa tipagem.

Agora que você sabe basicamente o que é uma variável, vamos entender o que pode ser feito com elas.

Atribuições

A variável, como dito antes, tem o objetivo de guardar algum valor. Em Python, para se atribuir um valor a uma variável, seguimos a seguinte sintaxe:

[nome da variável] = [valor a ser guardado]

Aqui está um outro exemplo:

Importante: O símbolo “=” (igual) não tem o significado de igualdade matemática, mas indica um comando para guardar o valor especificado na posição de memória representada pela variável. É importante ressaltar que ao realizarmos essa operação, o valor antigo da variável é perdido.

Operações

Em Python, como em outras linguagens, podemos realizar operações aritméticas sobre os valores guardados nas variáveis.

Operações Aritméticas

Primeiro, vamos falar das operações aritméticas. As operações aritméticas nativas do Python são:

  1. Adição: Se quero somar x1 com x2 e guardar em x3, em Python fica:

2. Subtração:

3. Divisão: Se quero dividir x1 por x2 e guardar em x3:

4. Multiplicação:

5. Exponenciação: Se quero elevar x1 a x2 e guardar em x3:

6. Resto da divisão: Se quero guardar em x3 o resto da divisão de x1 por x2:

7. Divisão inteira: Se quero guardar em x3 a divisão inteira de x1 por x2:

Operações Booleanas

Os símbolos ==, !=, >, >=, < e <= são utilizados em afirmações, que podem ser verdadeiras ou falsas. Se a afirmação for verdadeira, o programa devolve True, senão ele devolve False, seguindo a lógica abaixo:

Operações Booleanas

Exemplos de uso das operações booleanas:

Operações Lógicas

Essas afirmações de True ou False podem ser modificadas e relacionadas usando operações lógicas, sendo elas and, or e not (algumas operações podem ser interpretados como expressões algébricas para facilitar o entendimento, sendo False igual a 0 e True igual a qualquer número natural, de preferência 1).

Operações Lógicas

Função Print

A função print(), como você já viu nos exemplos anteriores, é capaz de imprimir na tela o que é colocado entre seus parênteses. Note que não é necessário converter o valor entre parênteses para string. Aqui vai mais um exemplo:

Observe que para você printar alguma palavra ou letra é necessário declará-la como uma string, isto é, colocá-la entre aspas duplas (“) ou simples (‘). Caso contrário, a palavra será interpretada como uma variável.

Função Input

A função input() lê um texto digitado pelo usuário. Ao encontrar uma chamada da função input(), o programa para na respectiva linha e espera até que o usuário digite enter. Desta maneira, é possível criar programas que dependem da interação do cliente.

Esta função sempre retorna uma string (texto). Para ler um número inteiro ou decimal, é necessário convertê-lo para o tipo apropriado usando as funções int(), float(), respectivamente.

Condicionais — If, Elif, Else

As estruturas condicionais são extremamente úteis quando queremos que nosso programa execute instruções diferentes para diferentes situações. Para isso, usaremos o conhecimento adquirido até agora, nesse tutorial, a respeito das Operações Booleanas e Operações Aritméticas.

Por exemplo, se quisermos fazer um programa que diga se um dado número, numa variável numero, é divisível ou não por 3, podemos fazer o seguinte:

Agora que você já sabe mais ou menos como essas estruturas são usadas, vamos detalhar melhor. As condicionais são compostas por 3 tipos:

  • if: O if é a parte principal de uma estrutura condicional. Ela é construída da seguinte forma:
  • elif: Abreviação de Else If. O programa testa a condição contida no elif caso a condição no if seja falsa, ou seja, a expressão contida dentro do if retorne False. A estrutura do elif é dada por:
  • else: O else é o senão. Ou seja, quando todas as condições anteriores falharem (if e elifs), o programa executa o que está dentro do else. Essa estrutura é muito útil quando o programa deve executar uma instrução diferente apenas para um ou poucos casos específicos, sendo que para todos os outros podemos executar um mesmo grupo de instruções. Vamos exemplificar complementando novamente nosso exemplo anterior:

Listas

Uma lista é um estrutura de dados nativa do Python. Ela é, basicamente, um conjunto de elementos ordenados, sendo cada elemento um dado de um determinado tipo (int, string ou float, por exemplo). Não é necessário que todos os elementos de uma lista tenham o mesmo tipo. Em Python, a lista é um objeto do tipo list.

Declaração de uma lista:

Uma outra característica das listas é que todos os elementos são identificados por um índice. Dessa maneira, podemos pegar o valor de algum elemento e/ou alterá-lo por meio de seu índice. Para se chamar um termo específico ou conjunto de termos de uma lista é necessário colocar [] logo após a lista com o índice do elemento entre os colchetes. Abaixo temos alguns exemplos:

Note que o índice começa com zero para o primeiro valor e é somado 1 para cada valor a sua direita. No caso de números negativos, o último valor da lista tem índice -1, sendo subtraído 1 para cada valor a sua esquerda. A figura abaixo mostra uma abstração da lista, com os índices representados nas duas formas citadas acima.

Para chamar apenas uma parte da lista se deve usar [a:b], onde a é o índice do primeiro valor do corte e b é o índice do primeiro valor que não deve ser incluído (ou seja, o índice do último valor do corte mais 1). Caso essas partes fiquem vazias será completo com o resto da lista.

É possível mudar o valor de uma lista como se muda uma variável normalmente.

Importante: Uma utilidade importantíssima de se usar o [:] é para realizar uma cópia de uma lista. Fazer uma cópia de uma lista significa criar um novo objeto lista, em outro endereço da memória, porém com exatamente as mesmas características. Por exemplo, ao fizermos o seguinte:

Estamos apenas copiando o endereço da lista_a para a lista_b, e não criando realmente um novo objeto. Isso significa que lista_a e lista_b são apenas dois “apelidos” para o mesmo objeto, no mesmo endereço de memória. Dessa maneira, se alterarmos a lista_a, a lista_b também sofrerá alteração, porque estão referenciando o mesmo objeto. Isso ficará claro no exemplo abaixo:

Porém, às vezes desejamos criar uma lista exatamente igual a alguma que já temos, mas desejamos alterá-las independentemente. Para isso, usamos o [:]:

Como vemos no exemplo acima, a alteração não afetou as duas listas criadas, diferentemente de quando fizemos apenas uma atribuição simples.

Mais detalhes em listas (append(), pop(), len())

Existem diversas funções em Python para se trabalhar com listas. Abaixo estão algumas delas.

lista.append(): adiciona um certo termo ao final de uma lista. Apenas pode adicionar um termo de cada vez. Se for necessário adicionar mais de um termo, pode-se usar um loop (que será visto no próximo post).

lista.pop(): apaga o termo que está entre os parênteses da lista e devolve o termo apagado (caso os parênteses fiquem vazios, o último termo será apagado). Abaixo temos alguns exemplos:

Uma abstração dessa função é pensar na lista como uma pilha, onde os elementos estão empilhados. O último elemento da lista é o último elemento que está empilhado. Portanto, podemos apenas desempilhar o termo que está no topo (lista.pop()) ou empilhar um novo termo (lista.append()).

lista.sort(): organiza os termos da lista em ordem crescente, ou decrescente. Esta função possui alguns argumentos muito úteis, como reversee key . O reverse, que por default tem valor False , define se a lista será organizada em ordem crescente (reverse=False) ou decrescente (reverse=True). Já o argumento key define o critério de organização. Esses conceitos ficarão mais claros nos exemplos a seguir (a palavra def serve para definir uma função e será explicada melhor no próximo post).

len(lista): Retorna o tamanho de uma lista.

Se você chegou até aqui, parabéns pela força de vontade! Como já mencionamos, o tutorial foi divido em duas partes. Nessa semana, vimos alguns conceitos muito importantes de programação e, na próxima semana, traremos alguns conceitos mais avançados. Entretanto, você já possui capacidade suficiente para conseguir ler e entender algumas documentações e conceitos mais complicados caso queira ir atrás.

Caso tenha encontrado algum erro, achou que algo não ficou muito claro ou que algo ficou de fora ou mal explicado, não deixe de comentar, feedbacks são sempre bem vindos!

Nos próximos posts, traremos mais alguns conceitos de programação em python importantes para a área de inteligência artificial. No entanto, depois disso, voltaremos com outros posts mais voltados especificamente a machine learning e ciência de dados. Se você tiver interesse no tema, siga a nossa página no Facebook e acompanhe nossas publicações.

--

--