Sua Jornada de Programador (E tudo bem ser confuso!)
Para muitas pessoas, a programação parece uma realidade distante. Algumas sentem a mente dar um nó ao se depararem com as famosas "linhas coloridas" de um código na tela, sentindo-se completamente perdidas igual a Nazaré em Senhora do destino.
Acontece que graças ao nosso "tio", Guido Van Rossum, que em 1989 deu uma grande contribuição para a nossa civilização ao criar o Python: uma ferramenta poderosíssima que pode facilitar (e muito!) as nossas vidas. O objetivo deste artigo é introduzir a linguagem Python para quem nunca escreveu uma linha de código e quer aprender, de forma didática e divertida, como dar os primeiros passos nesse universo. Nossa jornada vai passar por: variáveis e expressões, estruturas de decisão, laços de repetição (loops), funções e bibliotecas Python.
1. INTRODUÇÃO
O Python é uma linguagem de programação interpretada. Pense assim: em vez de ler um manual de instruções inteiro para só depois executar a tarefa, o Python lê e executa seu código linha por linha, na hora. Essa agilidade, somada ao incrível engajamento da sua comunidade, faz dele uma das linguagens mais populares do mundo, como aponta McKinney (2018).
Outra característica importante é a sua tipagem dinâmica. Isso significa que uma variável não fica "presa" a um tipo de dado. Se hoje ela guarda um número, amanhã pode guardar um texto, sem problemas. Mas não se preocupe com isso agora, veremos na prática como essa mágica funciona!
1.1 TIPOS DE DADOS
Agora a jornada começa de verdade! Vamos mergulhar nos blocos de construção do Python. É uma boa ideia prestar atenção aqui, pois entender bem essa base vai facilitar muito sua vida no futuro.
Em programação, estamos sempre lidando com dados ou "valores". No Python, os tipos mais básicos que você encontrará são:
- Inteiros (int): Números inteiros, redondinhos, como 1, 2 e 3.
- Ponto Flutuante (float): Os números "quebrados", com casas decimais, como 1.2 ou 3.14.
- Strings (str): Basicamente, qualquer texto, como a famosa frase "Hello, World!".
- Booleanos (bool): Representam apenas dois valores: True (Verdadeiro) ou False (Falso).
Entender como esses tipos conversam entre si é a chave. Por exemplo, o Python não consegue fazer operações aritméticas com um número e um texto. Tentar somar 1 + "Maçã" não faz sentido para ele. Por outro lado, ele sabe lidar muito bem com diferentes tipos de números: a expressão 1 + 1.2 resulta, sem problemas, em 2.2
1.2 PREPARANDO O NOSSO AMBIENTE
1.2.1 Instalando o Python
O primeiro passo é instalar o Python em seu computador. Baixe-o diretamente do site oficial: https://www.python.org/downloads/
A instalação é compatível com vários sistemas operacionais. No Windows, você baixará um executável com uma instalação bem intuitiva. Para Linux e macOS, o processo é um pouco diferente, mas igualmente tranquilo.
1.2.2 Usando uma IDE para facilitar a vida
"Ok, instalei. E agora, o que eu faço com isso?" Calma! Você já poderia criar e executar programas, mas vamos facilitar (e muito!) a nossa vida com uma IDE (Integrated Development Environment). Pense nela como um editor de texto superpoderoso, feito especialmente para programar. É um software que nos dá uma interface amigável para escrever, testar e executar nossos códigos.
Existem várias IDEs, das mais simples às mais sofisticadas. Para começar, usaremos o Thonny, que foi criado exatamente para iniciantes. Você pode baixá-lo aqui: https://thonny.org/
Essa é a cara do nosso ambiente de desenvolvimento! Vamos fazer um tour rápido:
- Editor de Código (janela de cima): A parte principal, na área superior, é o editor. É aqui que vamos escrever nossos códigos.
- Terminal / Shell (janela de baixo): Na parte inferior, fica o terminal. Pense nele como a "janela de resultados", onde veremos o que o nosso programa fez e poderemos interagir com ele.
- Variáveis (canto direito): No canto superior direito, temos um painel para visualizar nossas variáveis e expressões em tempo real.
Na barra de ferramentas, os ícones mais importantes para nós agora são em ordem: Novo, Abrir, Salvar e, o principal, Executar (o botão verde com o símbolo de "play"), que dá vida ao nosso código!
Com tudo instalado, agora sim, estamos prontos para começar a nossa aventura!
2. VARIÁVEIS E EXPRESSÕES
Pense em uma variável como uma caixa com uma etiqueta. Nós damos um nome à etiqueta e guardamos um valor dentro da caixa. Por exemplo, podemos criar a variável ano e guardar o valor 2025 nela: ano = 2025.
Já uma expressão é uma combinação de valores e variáveis para produzir um novo resultado. Lembra das aulas de matemática do primário? A ideia é a mesma e vai nos ajudar a entender essa parte.
Vamos construir uma expressão para descobrir o próximo ano. Para isso, criaremos outra variável para guardar o resultado, que tal proximo_ano? A lógica é simples: pegamos o valor da nossa variável ano e somamos 1 a ela, correto? A expressão fica assim: proximo_ano = ano + 1.
Ao executar o programa, você vai notar algo curioso: nada aparece no terminal! Apesar de não haver uma interação visível, o computador fez o trabalho dele. Podemos confirmar isso olhando o painel de variáveis, no canto superior direito, onde ano e proximo_ano estão declaradas com seus valores.
Mas como fazemos para que o programa "fale" conosco e mostre os resultados no terminal? Para isso, usamos a função print(). Como ela é built-in, já vem com o Python e está pronta para o uso.
Ao usarmos print(proximo_ano), o resultado da nossa expressão finalmente aparecerá na tela, como você pode ver na imagem a seguir.
Que tal dar mais vida ao nosso programa? Vamos aprender a criar variáveis com valores fornecidos pelo usuário, o que deixará nosso código muito mais interativo.
Para isso, espero que você já esteja fera no assunto de tipos de dados, pois é agora que eles realmente entram em campo e mostram sua importância!
A sintaxe para receber um dado do usuário e guardá-lo em uma variável é a seguinte: nome_da_variavel = tipo(input("Sua mensagem aqui"))
Como você pode ver, usamos a função input(), que também é built-in. O trabalho dela é pausar a execução do programa e esperar que o usuário digite algo no terminal.
Um ponto crucial é que o input() sempre captura o que o usuário digita como texto. Por isso, quase sempre "envolvemos" ele com uma função de conversão de tipo, como int() ou float(), para transformar o texto em um número com o qual possamos trabalhar.
Para deixar nossa saída de texto mais dinâmica, vamos usar o formato das f-strings: print(f"Sua mensagem aqui {variavel}").
Mas o que é esse f antes das aspas? Ele "ativa" um modo especial na string, permitindo que a gente insira variáveis diretamente no meio do texto, bastando colocá-las entre chaves {}.
Agora um exemplo utilizando strings:
Agora que você já está fera em variáveis e expressões, vamos acelerar o ritmo!
2.1 REGRAS PARA NOME DE VARIÁVEIS: O QUE PODE E O QUE NÃO PODE
Existem algumas regras que o Python exige na hora de nomear variáveis. Se você não as seguir, o programa dará erro.
- Não pode começar com números: Um nome de variável precisa começar com uma letra ou underline (_).
- 123_variavel = 1 (ERRADO)
- variavel_123 = 1 (CORRETO)
- Não pode ter espaços: Para separar palavras, o padrão em Python é usar o underline.
- minha variavel = 1 (ERRADO)
- minha_variavel = 1 (CORRETO)
2.2 DICAS DE ESTILO (BOAS PRÁTICAS)
Agora, algumas dicas que não causam erro, mas que são como um "manual de etiqueta" entre os programadores. É aquele conselho de amigo, para você não dizer que ninguém te avisou lá na frente!
- Evite acentos e caracteres especiais: Embora o Python 3 aceite, o padrão é usar apenas letras, números e underline. Isso evita problemas de compatibilidade. ano_producao é melhor que ano_produção.
- Dê nomes intuitivos: Sua variável deve ser um "spoiler" do que ela guarda. preco_final é muito mais claro do que pf ou resultado.
- Cuidado com maiúsculas e minúsculas: O Python é case-sensitive, ou seja, ele diferencia Nome, nome e NOME. Para ele, são três variáveis completamente diferentes! O padrão é usar sempre letras minúsculas.
3. ESTRUTURAS DE DECISÃO
Agora vamos aprender como ensinar nosso programa a tomar decisões!
E, diferente de nós (que às vezes demoramos para escolher um filme), o nosso programa é muito decidido. Para ajudá-lo nessa tarefa, vou te apresentar a galera que comanda essa área: a turma dos operadores lógicos.
Vamos traduzir esses operadores para uma situação que todo mundo entende: pedir uma pizza!
- or (OU): Para ficarmos felizes, vamos pedir uma pizza de frango com catupiry ou uma marguerita.
Se o cardápio tiver pelo menos uma das duas, estamos satisfeitos.
- and (E): Além disso, queremos uma pizza e uma coca gelada.
Aqui, só ficamos satisfeitos se os dois itens vierem.
- not (NÃO): Este operador inverte uma condição. Pense na placa da pizzaria. Se a condição pizzaria_esta_aberta for True, então a condição not pizzaria_esta_aberta será False.
A estrutura básica para tomar decisões em Python usa três comandos, que funcionam como um mapa com diferentes caminhos:
- if (Se): É o seu ponto de partida, o caminho principal. O programa verifica: "Se esta condição for verdadeira, siga por aqui e ignore o resto".
- elif (Senão, se): É uma rota alternativa. O programa só olha para este caminho se a condição do if falhar. Ele pensa: "Ok, o primeiro caminho não deu. Senão, se esta outra condição for verdadeira, siga por aqui e ignore o resto". Você pode ter vários elif em sequência.
- else (Senão): É a rota "qualquer outra coisa", a sua última opção. Se o programa testou todos os caminhos do if e dos elif e nenhum deu certo, ele seguirá o caminho do else obrigatoriamente.
Agora, vamos usar tudo o que aprendemos para resolver um problema prático!
Nosso Desafio: Automatizando a Pizzaria!
O Contexto: Uma pizzaria está com uma demanda altíssima e o gerente, para agilizar a vida, decidiu automatizar os pedidos em um totem de autoatendimento. Para maximizar a produção, a pizzaria definiu algumas regras. Fomos contratados para criar o programa que recebe e valida o pedido do cliente.
As Regras do Jogo:
- Existe a pizza "Sabor do Dia", que é a especialidade da casa.
- Como um "plano B" para não perder clientes, a clássica "Mussarela" está sempre disponível no cardápio.
- Qualquer outro sabor não poderá ser atendido.
Sua Missão: Crie um código que:
- Tenha uma variável para guardar o sabor_do_dia (ex: "Calabresa").
- Pergunte ao cliente qual sabor ele deseja e guarde na variável sabor_cliente.
- Use a estrutura if/elif/else para decidir o que fazer:
- SE (if) o cliente pedir o sabor_do_dia, exiba a mensagem: f"Pedido confirmado! Sua pizza de {sabor_do_dia} já está no forno."
- SENÃO, SE (elif) o cliente pedir "Mussarela", exiba: "Boa escolha! Nossa Mussarela clássica está sendo preparada."
- SENÃO (else), para qualquer outro sabor, exiba: f"Desculpe, hoje não temos o sabor {sabor_cliente}. Que tal pedir a pizza do dia?"
No python nosso problema fica assim:
No nosso exemplo, como o sabor do dia era 'Calabresa' e nós pedimos 'Frango com catupiry', acabamos caindo no bloco else e não fomos atendidos. (Pois é, somos aquele cliente chato mesmo).
Mas você notou um operador novo na nossa condição if? Espero que sim! Estamos falando do == (dois sinais de igual), que é completamente diferente do = (um sinal de igual).
Para nunca mais esquecer:
- = (um igual): É para atribuição. Você está dando um valor a uma variável. Leia como: sabor = "Calabresa" -> "a variável sabor recebe 'Calabresa'".
- == (dois iguais): É para comparação. Você está perguntando se dois valores são iguais. Leia como: sabor == "Calabresa" -> "o valor de sabor é igual a 'Calabresa'?". A resposta será sempre True ou False.
Por último, um lembrete sobre o else: perceba que ele não precisa de uma condição. Como dissemos antes, ele é o "plano final" que é executado se nenhuma das condições do if ou elif for verdadeira.
4. ESTRUTURAS DE REPETIÇÃO
Agora vamos ensinar o nosso programa a repetir nossas instruções, voltando ao exemplo da pizzaria imagine que o cliente queira saber quantas pizzas foram vendidas ao final do dia, para isso a cada pedido é necessário a contabilização em nossa programa. Agora o While e o For entram em cena.
4.1 WHILE
O bloco While significa ‘enquanto’, por exemplo enquanto nossa pizzaria estiver aberta aceitamos pedidos, no python:
Se o seu terminal começou a repetir a mesma mensagem sem parar, talvez você já tenha entrado em pânico e fechado tudo. Se não, para forçar a parada, use o atalho Ctrl + C.
"E quando o programa pararia sozinho?" A resposta é: nunca!
O que aconteceu foi que seu código entrou em um laço (ou loop) infinito. Como não demos a ele uma condição de parada, ele continuará executando a mesma tarefa para sempre.
Esse é um problema clássico, mas não se assuste! Calma, que vou te ensinar a lidar com essa galerinha nova no pedaço e a colocar ordem na casa.
A regra de ouro para controlar um loop é definir uma condição de parada.
Pense em um sinal de trânsito: a condição para o tráfego seguir é o sinal estar verde. Assim que ele fica vermelho, a condição se torna falsa e os carros param.
Em nosso programa, isso significa que a variável que controla o loop precisa ter a chance de mudar de valor dentro das repetições. Se o valor dela nunca muda, o "sinal" nunca fica vermelho!
Uma forma de fazer isso é, ao final de cada execução do laço, perguntar algo ao usuário. Por exemplo, podemos pedir um novo valor que atualize a variável de controle, dando a ela a chance de parar o loop.
No exemplo anterior, pedimos ao usuário duas vezes o valor da variável funcionamento. Na primeira vez, ele informou que a pizzaria estava aberta e, por isso, ela aceitou pedidos. Já na segunda vez, o usuário decidiu "fechar" a pizzaria, e então o nosso programa se encerrou.
4.2 FOR
O outro laço de repetição que vamos conhecer é o for.
A grande diferença dele é que o for é perfeito para quando você quer repetir algo um número definido de vezes. Enquanto o while continua enquanto uma condição é verdadeira, o for percorre uma sequência de itens e para quando ela acaba.
Para fazer repetições contadas, a ferramenta mais comum é a função range(). Por exemplo, range(5) garante 5 iterações..
Agora, um ponto super importante sobre o range() e a programação em geral. Preste atenção para não cair em uma das pegadinhas mais comuns!
Em Python, uma iteração começa na posição zero. (O quê?! Isso mesmo, do zero).
Para ficar mais claro, imagine uma fila com 5 pessoas. No nosso dia a dia, contamos as pessoas de 1 a 5. Mas para o computador, a primeira pessoa está na posição 0, a segunda na posição 1, e assim por diante, até a última, que estará na posição 4.
Pessoas na Fila: 1ª | 2ª | 3ª | 4ª | 5ª
Posição (Índice): 0 | 1 | 2 | 3 | 4
É por isso que range(5) gera os números 0, 1, 2, 3, 4. Ele nos dá 5 números no total, mas a contagem começa do zero!
O range() é mais poderoso do que parece. Além da forma simples que já vimos, podemos dar a ele até três informações, seguindo a sintaxe: range(inicio, fim, passo).
- inicio (opcional): O número onde a sequência começa. Se você não o definir, o padrão é sempre começar do 0.
- fim (obrigatório): Atenção aqui! Este é o número que limita a sequência, mas o range() para antes de chegar nele. Ou seja, o valor do fim não é incluído na contagem. Por exemplo, range(1, 5) irá gerar os números 1, 2, 3 e 4.
- passo (opcional): É o "tamanho do pulo" entre os números. O padrão é 1 (contando de um em um), mas você pode definir 2 para pular de dois em dois, por exemplo.
Vamos ver esses parâmetros em ação no Thonny para tudo ficar mais claro.
Vamos usar mais um exemplo da nossa pizzaria. Ela já ficou tão íntima que merece um nome: vamos chamá-la de "Pizzaria Tenente Pimenta". (Nome afetivo, rsrs. E se você visitar Ouro Preto - MG e quiser comer uma boa pizza, fica a dica!)
Vamos supor que a pizzaria trabalhe com uma limitação de 100 pizzas por dia. Ou seja, quando atingir essa marca, ela encerra as atividades. Enquanto o limite não for atingido, é possível realizar pedidos.
Nosso exemplo no Thonny ficaria assim:
Você deve ter notado o \n no início do nosso print(). Esse é o caractere de quebra de linha.
Por padrão, a função print() já insere uma quebra de linha no final. Portanto, quando usamos o \n, estamos pedindo para dar uma quebra de linha extra, o que ajuda a organizar a saída de dados no terminal com um espaço em branco.
Sobre o nosso laço de repetição, o mais importante é notar que, desta vez, ele parou sozinho. Isso aconteceu porque ele tinha uma condição de parada bem estabelecida: atingir a capacidade máxima de 100 pizzas.
5. FUNÇÕES
Na minha opinião, chegamos a uma das partes mais fascinantes do Python. É aqui que aprendemos a "dar o pulo do gato" para automatizar tarefas e poupar horas de trabalho.
Existem, basicamente, dois tipos de funções: as que nós mesmos criamos (declaradas) e as que já vêm prontas no Python (built-in). Nós já usamos várias funções built-in até agora, como a print(), a input() e a range().
Neste tópico, vamos aprender a criar as nossas próprias.
Pense em uma função como um bloco de código reutilizável que realiza uma tarefa específica. Ao criá-la, nós damos um nome a esse bloco, definimos quais "ingredientes" (parâmetros) ele precisa para trabalhar e escrevemos o passo a passo do que ele deve fazer. Depois de definida, podemos chamá-la pelo nome toda vez que precisarmos, para que ela desempenhe seu papel.
def nome_da_funcao(parametro1, parametro2):
# Bloco de código com as tarefas
valor_calculado = parametro1 + parametro2
return valor_calculado
Vamos a outro exemplo: imagine que a pizzaria queira informar o tempo de espera para cada sabor de pizza. Os tempos definidos são:
- Calabresa: 20 minutos.
- Frango com Catupiry: 25 minutos.
- Marguerita: 30 minutos.
Para automatizar essa consulta, vamos declarar uma função chamada tempo_espera. Ela receberá o sabor da pizza como parâmetro e retornará o tempo de espera correspondente.
Vejamos como implementar isso no Thonny.
Para chamar a função, é importante entender que precisamos de uma variável para guardar o que ela retorna. No nosso exemplo, usamos a variável tempo para isso.
Resumindo o que fizemos:
- Declaramos a função tempo_espera, que recebe um parâmetro (o sabor).
- Pedimos ao usuário para digitar esse parâmetro.
- Chamamos a função, passando o sabor que o usuário digitou, e guardamos o seu retorno na variável tempo.
- Por fim, exibimos o resultado que estava em tempo no terminal.
Parece confuso? E, honestamente, é um pouco no começo. Até eu conseguir entender bem as funções, foram boas horas de prática.
Dessa forma, chegamos ao fim da nossa jornada. Se você chegou até aqui e entendeu, parabéns! Se não entendeu ou entendeu mais ou menos, volte e revise quantas vezes quiser. Lembrei do meu professor de programação na universidade, que dizia: "a prática leva à perfeição". É clichê, eu sei, mas é a mais pura verdade. Não hesite em praticar e repetir até o conceito fixar.
Antes de encerrar oficialmente, gostaria de falar apenas mais duas coisas. Serei breve, prometo!
A imagem acima mostra a barra de ferramentas do Thonny. Reparou nesse ícone de "baratinha"? Esse é o modo de depuração, e o que ele faz?
Basicamente, ele executa o seu programa passo a passo, mostrando com muita calma o que está sendo feito em cada linha. O depurador será o seu melhor amigo neste início, servindo tanto para entender a lógica do seu programa quanto para encontrar erros.
Por isso, use e abuse dessa ferramenta!
O outro ponto é que, quando esses conceitos estiverem bem claros na sua cabeça, você estará apto a mexer com o universo das bibliotecas em Python. Existem bibliotecas para inúmeras finalidades, e é aí que vemos todo o potencial da linguagem.
Nenhum programador no mundo sabe todas as bibliotecas de cor e salteado. Por isso, cuidado com a autossabotagem de pensar que você não é capaz de se tornar um bom programador, desenvolvedor, etc.
A dica que te dou e que me deram (estou apenas repassando rsrs) é: foque naquilo que você gosta e aprenda o máximo sobre isso.
- Quer ser Engenheiro de Dados? Foque nas linguagens, softwares e ferramentas que essa galera usa.
- Quer desenvolver softwares? Procure saber o que está em alta nessa área.
Estude bastante, que lá na frente você colherá bons frutos.
Espero ter ajudado você a entender um pouco desses conceitos iniciais e desejo muito sucesso em sua jornada! Se precisar me contatar para alguma coisa, deixarei meu e-mail abaixo. Ficarei muito feliz em ajudar.
Abraços!
clayonneris@gmail.com
6. REFERÊNCIAS BIBLIOGRÁFICAS
MCKINNEY, Wes. Python para Análise de Dados: tratamento de dados com pandas, NumPy e IPython. São Paulo: Novatec, 2018.
DOWNEY, Allen B. Pense em Python. 2. ed. [S.l.]: O’Reilly, 2016. ISBN 978-1-4919-3936-9