Introdução à programação usando Python – Parte III

Compartilhar

Continuação da introdução à programação usando a linguagem Python.

Continuação da introdução à programação usando a linguagem Python.


📝 Sinopse
Nas partes anteriores desta série, construímos uma base sólida: aprendemos variáveis, tipos, operadores, entrada e saída de dados (Parte I), além de estruturas condicionais, laços de repetição e técnicas de depuração (Parte II). Agora, na Parte III, damos um salto qualitativo no pensamento de programador. Você aprenderá a decompor problemas complexos em partes gerenciáveis, a criar suas próprias funções com def para modularizar e reutilizar código, a compreender o escopo de variáveis (local e global) e, por fim, a dar os primeiros passos no versionamento de código com Git — uma habilidade indispensável para qualquer programador moderno. Com esses recursos, seus programas deixarão de ser scripts monolíticos e se tornarão projetos organizados, legíveis e prontos para crescer.

Figura 1 — Decomposição e modularização do algoritmo de Kaprekar. Fonte: elaborado pelo autor.
1. Decomposição de Problemas

Um dos maiores desafios enfrentados por programadores iniciantes não é aprender a sintaxe de uma linguagem, mas sim aprender a pensar como um programador. Diante de um problema complexo, a tentação natural é tentar resolvê-lo de uma vez. Programadores experientes, porém, fazem o oposto: eles decompõem o problema em partes menores, mais simples e mais fáceis de resolver individualmente (CORMEN et al., 2009).

💡 Definição
Decomposição é a técnica de dividir um problema grande e complexo em subproblemas menores e independentes. Cada subproblema é resolvido separadamente e, ao final, as soluções parciais são combinadas para compor a solução completa. Essa estratégia é conhecida em ciência da computação como dividir para conquistar (CORMEN et al., 2009).
PROBLEMA COMPLEXO Subproblema 1 Subproblema 2 Subproblema 3 Solução parcial 1 Solução parcial 2 Solução parcial 3 SOLUÇÃO COMPLETA ✓
Figura 2 — Técnica de decomposição: dividir para conquistar. Fonte: elaborado pelo autor.

Vejamos um exemplo concreto. Suponha que você precise criar um programa que leia as notas de uma turma, calcule a média, identifique a maior e a menor nota e exiba um relatório. Em vez de escrever tudo em um bloco único, podemos decompor o problema:

🔢 Exemplo de Decomposição
Problema: Gerar relatório de notas de uma turma.

Subproblemas identificados:
1. Ler as notas dos alunos (entrada de dados).
2. Calcular a média aritmética (processamento).
3. Encontrar a maior e a menor nota (processamento).
4. Determinar quantos foram aprovados e reprovados (processamento).
5. Exibir o relatório formatado (saída de dados).

Cada um desses subproblemas pode ser implementado como uma função independente — conceito que estudaremos a partir da seção 3.
Python — Decomposição (abordagem monolítica vs. decomposta)
# ❌ ABORDAGEM MONOLÍTICA (tudo junto — difícil de ler e manter)
notas = []
n = int(input("Quantos alunos? "))
for i in range(n):
    nota = float(input(f"Nota do aluno {i+1}: "))
    notas.append(nota)
soma = 0
for nota in notas:
    soma += nota
media = soma / n
maior = notas[0]
menor = notas[0]
for nota in notas:
    if nota > maior: maior = nota
    if nota < menor: menor = nota
aprov = 0
for nota in notas:
    if nota >= 7: aprov += 1
print(f"Média: {media:.1f} | Maior: {maior} | Menor: {menor}")
print(f"Aprovados: {aprov} | Reprovados: {n - aprov}")

Esse código funciona, mas é difícil de ler, testar e modificar. Na seção 3, veremos como transformá-lo em algo muito mais organizado usando funções.


2. Pensamento Computacional

A decomposição é um dos quatro pilares do pensamento computacional, uma abordagem para resolução de problemas proposta pela cientista da computação Jeannette Wing. Segundo (WING, 2006), o pensamento computacional é uma habilidade fundamental que deveria ser ensinada a todas as pessoas, não apenas a cientistas da computação, pois envolve uma forma de raciocinar que se aplica a qualquer campo do conhecimento.

Os Quatro Pilares do Pensamento Computacional 🧩 DECOMPOSIÇÃO Dividir o problema grande em partes menores e mais simples. 🔍 RECONHECIMENTO DE PADRÕES Identificar semelhanças e regularidades. 🎯 ABSTRAÇÃO Focar no que é essencial, ignorando detalhes irrelevantes. ⚙️ ALGORITMOS Criar uma sequência de passos ordenados para resolver o problema.
Figura 3 — Os quatro pilares do pensamento computacional. Fonte: adaptado de Wing (2006).

Ao programar em Python, a decomposição se materializa na criação de funções; o reconhecimento de padrões leva à reutilização de código; a abstração permite que criemos funções genéricas que funcionam para diferentes entradas; e os algoritmos são a lógica que implementamos dentro de cada função (MENEZES, 2019).

Python — Pensamento Computacional na Prática
# Exemplo: Calcular a média de QUALQUER lista de números
# Aplicando os 4 pilares:
#   1. Decomposição: separar leitura, cálculo e exibição
#   2. Padrão: o cálculo de média é sempre soma/quantidade
#   3. Abstração: a função não depende de QUAIS números são
#   4. Algoritmo: somar tudo, dividir pela quantidade

# Passo 1: Leitura (decomposição)
valores = []
n = int(input("Quantos valores? "))
for i in range(n):
    v = float(input(f"Valor {i + 1}: "))
    valores.append(v)

# Passo 2: Cálculo — padrão identificado (algoritmo)
soma = sum(valores)         # sum() soma todos os itens
media = soma / len(valores)  # len() conta os itens

# Passo 3: Exibição (decomposição)
print(f"Soma: {soma:.2f}")
print(f"Média: {media:.2f}")

3. Funções: Modularizando o Código

Uma função é um bloco de código nomeado e reutilizável que realiza uma tarefa específica. Funções são a principal ferramenta de modularização em programação: permitem dividir um programa extenso em módulos menores, independentes e fáceis de entender, testar e manter (MATTHES, 2019).

Em Python, já utilizamos diversas funções embutidas (built-in) como print(), input(), int(), float(), len() e range(). Agora, aprenderemos a criar nossas próprias funções usando a palavra reservada def.

# Anatomia de uma função Python def saudacao ( nome ) : """Exibe uma saudação personalizada.""" mensagem = f"Olá, { nome } !" print ( mensagem ) # Chamando a função: saudacao ( "Maria" ) # Saída: Olá, Maria! ← Palavra-chave def + nome + parâmetros + : ← Docstring (opcional) Documenta a função ← Corpo da função Instruções indentadas ← Chamada da função nome(argumento)
Figura 4 — Anatomia de uma função Python. Fonte: elaborado pelo autor.
Python — Criando a Primeira Função
# Definindo uma função com def
def saudacao():
    """Exibe uma mensagem de boas-vindas."""
    print("Olá! Bem-vindo ao programa.")
    print("Vamos aprender sobre funções!")

# Neste ponto, a função foi DEFINIDA, mas ainda NÃO executada.
# Para executá-la, precisamos CHAMÁ-LA:

saudacao()   # Chamada 1
print("---")
saudacao()   # Chamada 2 (reutilização!)
▶ Saída esperada
Olá! Bem-vindo ao programa.
Vamos aprender sobre funções!
---
Olá! Bem-vindo ao programa.
Vamos aprender sobre funções!
⚠ Definir ≠ Executar
Um erro comum entre iniciantes é confundir a definição de uma função (bloco def) com a sua execução (chamada com parênteses). A definição apenas registra a função na memória. Para que ela seja executada, é preciso chamá-la pelo nome seguido de parênteses: saudacao(). Sem os parênteses, Python apenas referencia o objeto da função, sem executá-la (SWEIGART, 2020).

4. Parâmetros e Argumentos

As funções se tornam muito mais poderosas quando podem receber dados de entrada. Esses dados são chamados de parâmetros (na definição da função) e argumentos (na chamada da função). Essa distinção é sutil, mas importante: o parâmetro é a variável na assinatura da função, enquanto o argumento é o valor concreto passado na chamada (MATTHES, 2019).

4.1 Parâmetros posicionais
Python — Parâmetros Posicionais
# Função com um parâmetro
def saudacao_pessoal(nome):
    """Exibe uma saudação personalizada."""
    print(f"Olá, {nome}! Seja bem-vindo(a)!")

saudacao_pessoal("Ana")     # Olá, Ana! Seja bem-vindo(a)!
saudacao_pessoal("Carlos")  # Olá, Carlos! Seja bem-vindo(a)!

# Função com múltiplos parâmetros
def apresentar(nome, idade, curso):
    """Apresenta um aluno com seus dados."""
    print(f"Nome: {nome}")
    print(f"Idade: {idade} anos")
    print(f"Curso: {curso}")
    print()

apresentar("Maria", 22, "Engenharia")
apresentar("João", 19, "Ciência da Computação")
4.2 Parâmetros com valor padrão

Podemos definir valores padrão para parâmetros. Se o argumento não for fornecido na chamada, o valor padrão é utilizado (PYTHON SOFTWARE FOUNDATION, 2024).

Python — Parâmetros com Valor Padrão
# Parâmetro com valor padrão (default)
def potencia(base, expoente=2):
    """Calcula base elevada ao expoente (padrão: ao quadrado)."""
    resultado = base ** expoente
    print(f"{base}^{expoente} = {resultado}")

potencia(5)        # 5^2 = 25  (usa o padrão expoente=2)
potencia(5, 3)     # 5^3 = 125 (sobrescreve o padrão)
potencia(2, 10)    # 2^10 = 1024

# Outro exemplo: formatação de preço
def formatar_preco(valor, moeda="R$", casas=2):
    """Formata um valor monetário."""
    print(f"{moeda} {valor:.{casas}f}")

formatar_preco(49.9)                  # R$ 49.90
formatar_preco(49.9, "US$")           # US$ 49.90
formatar_preco(49.9, "€", 0)          # € 50
4.3 Argumentos nomeados (keyword arguments)
Python — Argumentos Nomeados
# Argumentos nomeados: a ordem não importa
def ficha(nome, idade, cidade):
    print(f"{nome}, {idade} anos, mora em {cidade}.")

# Chamada posicional (ordem importa)
ficha("Ana", 25, "Brasília")

# Chamada com argumentos nomeados (ordem NÃO importa)
ficha(cidade="Natal", nome="Bruno", idade=30)

# Misturando posicionais e nomeados
ficha("Carla", cidade="Recife", idade=22)

5. Retorno de Valores: a Instrução return

Até agora, nossas funções apenas exibiam resultados com print(). No entanto, na maioria dos casos, queremos que a função calcule um valor e o devolva ao código que a chamou, para que esse valor possa ser armazenado, combinado ou usado em outras operações. Para isso, usamos a instrução return (SWEIGART, 2020).

⚠ print() ≠ return
print() apenas exibe um valor na tela — o valor é mostrado e "desaparece". return devolve o valor ao código chamador, permitindo que ele seja armazenado em uma variável e reutilizado. Uma função que usa print() sem return retorna implicitamente None. Esta é uma das confusões mais comuns entre iniciantes (MATTHES, 2019).
Python — return vs. print()
# ❌ Função que apenas EXIBE (não reutilizável)
def soma_print(a, b):
    print(a + b)

resultado = soma_print(3, 4)   # Exibe 7 na tela
print(resultado)                   # None! (não retornou nada)

# ✅ Função que RETORNA (reutilizável)
def soma(a, b):
    return a + b

resultado = soma(3, 4)          # Armazena 7 na variável
print(resultado)                   # 7
print(soma(10, 20) * 2)           # 60 (podemos operar com o retorno!)
print(soma(1, 2) + soma(3, 4))   # 10 (composição de chamadas)
5.1 Retornando múltiplos valores

Python permite que uma função retorne múltiplos valores de uma só vez, separados por vírgula. Internamente, Python empacota esses valores em uma tupla (PYTHON SOFTWARE FOUNDATION, 2024).

Python — Retorno Múltiplo
# Retornando múltiplos valores
def estatisticas(numeros):
    """Calcula soma, média, maior e menor de uma lista."""
    total = sum(numeros)
    media = total / len(numeros)
    maior = max(numeros)
    menor = min(numeros)
    return total, media, maior, menor

# Chamando e desempacotando os valores
notas = [8.5, 6.0, 9.2, 7.3, 5.8]
s, m, mx, mn = estatisticas(notas)

print(f"Soma: {s:.1f}")     # 36.8
print(f"Média: {m:.1f}")    # 7.4
print(f"Maior: {mx}")       # 9.2
print(f"Menor: {mn}")       # 5.8
5.2 Refatorando o problema da seção 1 com funções

Agora, podemos reescrever o programa monolítico da seção 1 de forma modular. Compare a clareza do código:

Python — Programa Decomposto com Funções
# ✅ ABORDAGEM MODULAR (decomposta em funções)

def ler_notas():
    """Lê as notas dos alunos e retorna uma lista."""
    notas = []
    n = int(input("Quantos alunos? "))
    for i in range(n):
        nota = float(input(f"Nota do aluno {i + 1}: "))
        notas.append(nota)
    return notas

def calcular_media(lista):
    """Retorna a média aritmética de uma lista de números."""
    return sum(lista) / len(lista)

def contar_aprovados(lista, nota_corte=7.0):
    """Conta quantos valores atingem a nota de corte."""
    aprovados = 0
    for nota in lista:
        if nota >= nota_corte:
            aprovados += 1
    return aprovados

def exibir_relatorio(lista):
    """Exibe o relatório completo da turma."""
    media = calcular_media(lista)
    aprov = contar_aprovados(lista)
    reprov = len(lista) - aprov

    print(f"\n{'='*35}")
    print(f"  RELATÓRIO DA TURMA")
    print(f"{'='*35}")
    print(f"  Alunos:     {len(lista)}")
    print(f"  Média:      {media:.1f}")
    print(f"  Maior nota: {max(lista)}")
    print(f"  Menor nota: {min(lista)}")
    print(f"  Aprovados:  {aprov}")
    print(f"  Reprovados: {reprov}")
    print(f"{'='*35}")

# === Programa principal (claro e legível) ===
notas = ler_notas()
exibir_relatorio(notas)
🔢 Vantagens da decomposição em funções
1. Legibilidade: o programa principal se lê quase como linguagem natural.
2. Reutilização: calcular_media() pode ser usada em qualquer programa que precise de média.
3. Testabilidade: cada função pode ser testada isoladamente.
4. Manutenção: para alterar a nota de corte, basta modificar contar_aprovados().

6. Escopo de Variáveis

Ao criar funções, surge uma questão fundamental: onde uma variável pode ser acessada? A resposta está no conceito de escopo. O escopo de uma variável define a região do código em que ela é visível e pode ser utilizada. Python possui dois escopos principais: local e global (SWEIGART, 2020).

ESCOPO GLOBAL Variáveis acessíveis em todo o programa nome = "Ana" x = 10 ESCOPO LOCAL — funcao_a() Variáveis existem APENAS aqui dentro a = 5 b = 20 ✓ Pode ler x e nome (globais) ✗ Não pode acessar c (de funcao_b) ✓ a e b existem apenas enquanto funcao_a() está em execução ESCOPO LOCAL — funcao_b() Variáveis independentes de funcao_a c = 99 a = "texto" ✓ Pode ler x e nome (globais) ✗ Não pode acessar b (de funcao_a) ✓ a = "texto" é outra variável, distinta do a = 5 de funcao_a
Figura 5 — Escopo local vs. global: cada função tem seu próprio espaço de variáveis. Fonte: elaborado pelo autor.
6.1 Escopo local

Variáveis criadas dentro de uma função (incluindo seus parâmetros) possuem escopo local: elas existem apenas durante a execução daquela função e são destruídas quando a função termina. Não é possível acessá-las de fora da função (PAIVA, 2021).

Python — Escopo Local
# Escopo local: variáveis dentro da função
def calcular():
    resultado = 10 + 20   # 'resultado' é LOCAL
    print(f"Dentro: {resultado}")  # 30

calcular()

# Tentar acessar 'resultado' aqui causará ERRO:
# print(resultado)  # NameError: name 'resultado' is not defined

# -----------------------------------------------
# Variáveis locais de funções diferentes são INDEPENDENTES
def funcao_a():
    x = 10
    print(f"funcao_a: x = {x}")

def funcao_b():
    x = 99   # Este 'x' é OUTRO, diferente do 'x' de funcao_a
    print(f"funcao_b: x = {x}")

funcao_a()  # funcao_a: x = 10
funcao_b()  # funcao_b: x = 99
6.2 Escopo global

Variáveis criadas fora de qualquer função, no nível principal do programa, possuem escopo global: elas podem ser lidas de dentro de qualquer função. Porém, para modificar uma variável global dentro de uma função, é necessário usar a palavra-chave global — embora essa prática seja geralmente desaconselhada (SWEIGART, 2020).

Python — Escopo Global
# Escopo global: variável acessível em todo o programa
PI = 3.14159  # Variável GLOBAL (convenção: MAIÚSCULAS para constantes)

def area_circulo(raio):
    """Calcula a área usando o PI global."""
    return PI * raio ** 2   # Lê PI sem problema

print(area_circulo(5))  # 78.53975

# -----------------------------------------------
# ⚠ Modificar global dentro de função (EVITE!)
contador = 0

def incrementar():
    global contador       # Declara intenção de modificar a global
    contador += 1

incrementar()
incrementar()
print(contador)  # 2

# ✅ MELHOR PRÁTICA: usar parâmetros e return
def incrementar_v2(valor):
    return valor + 1

contador = 0
contador = incrementar_v2(contador)
contador = incrementar_v2(contador)
print(contador)  # 2 (mesmo resultado, sem efeito colateral)
⚠ Por que evitar variáveis globais?
Variáveis globais modificáveis tornam o programa difícil de depurar e entender, pois qualquer função pode alterá-las de forma inesperada. Esse tipo de modificação é chamado de efeito colateral (side effect). A boa prática é passar dados como parâmetros e receber resultados via return, mantendo as funções puras e previsíveis. Constantes globais (como PI), por outro lado, são perfeitamente aceitáveis, pois nunca são modificadas (MATTHES, 2019).
6.3 Regra LEGB

Python resolve nomes de variáveis seguindo a regra LEGB (Local → Enclosing → Global → Built-in): procura primeiro no escopo local, depois no escopo de funções envolventes (para funções aninhadas), depois no escopo global e, por fim, entre os nomes embutidos da linguagem (PYTHON SOFTWARE FOUNDATION, 2024).

Python — Regra LEGB
# Demonstração da regra LEGB
x = "global"         # (G) Global

def externa():
    x = "enclosing"  # (E) Enclosing (envolvente)

    def interna():
        x = "local"  # (L) Local
        print(f"Interna vê: {x}")

    interna()
    print(f"Externa vê: {x}")

externa()
print(f"Global vê: {x}")

# Saída:
# Interna vê: local
# Externa vê: enclosing
# Global vê: global

7. Boas Práticas com Funções

Criar funções que funcionem é o primeiro passo. Criar funções bem escritas é o que diferencia um programador iniciante de um intermediário. A seguir, apresentamos as principais convenções e boas práticas adotadas pela comunidade Python (PYTHON SOFTWARE FOUNDATION, 2024).

Prática Descrição Exemplo
Nomes descritivos Use verbos que indiquem a ação; estilo snake_case calcular_media, validar_cpf
Função = 1 tarefa Cada função deve resolver um problema específico Separar leitura, cálculo e exibição
Docstrings Documente o propósito com """aspas triplas""" """Retorna a média de uma lista."""
Parâmetros claros Use nomes significativos para os parâmetros raio em vez de r
Evite efeitos colaterais Prefira return a modificar variáveis globais Retornar o resultado em vez de alterar estado externo
Tamanho moderado Se a função é muito longa, decomponha-a Limite de ~20 linhas como referência
Python — Boas Práticas com Funções
# ❌ MAU EXEMPLO
def f(l):
    s = 0
    for i in l:
        s += i
    print(s / len(l))

# ✅ BOM EXEMPLO
def calcular_media(notas):
    """Retorna a média aritmética de uma lista de notas.

    Parâmetros:
        notas (list): Lista de valores numéricos.

    Retorna:
        float: A média aritmética.
    """
    if not notas:
        return 0.0
    return sum(notas) / len(notas)

# Usando
resultado = calcular_media([8.0, 7.5, 9.0])
print(f"Média: {resultado:.1f}")  # 8.2

# Acessando a docstring:
help(calcular_media)
🐍 PEP 8 e PEP 257
A PEP 8 é o guia oficial de estilo de código Python e recomenda o uso de snake_case para nomes de funções e variáveis. A PEP 257 define as convenções para docstrings. Seguir essas convenções torna seu código consistente com o ecossistema Python e mais fácil de ser lido por outros programadores (PYTHON SOFTWARE FOUNDATION, 2024).

8. Noções de Versionamento de Código

À medida que seus programas crescem, surge um problema prático: como manter o controle das alterações feitas no código ao longo do tempo? Como voltar a uma versão anterior que funcionava? Como colaborar com outras pessoas sem sobrescrever o trabalho umas das outras? A resposta para todas essas perguntas é o versionamento de código.

💡 Definição
Versionamento de código (ou controle de versão) é a prática de registrar e gerenciar as alterações feitas em um conjunto de arquivos ao longo do tempo, de modo que seja possível recuperar versões específicas posteriormente. É como um "histórico de salvamentos" detalhado e inteligente para o seu projeto (CHACON; STRAUB, 2014).

Imagine que você está escrevendo um programa e faz uma alteração que quebra tudo. Sem versionamento, sua única opção seria tentar lembrar o que mudou e desfazer manualmente. Com versionamento, basta voltar ao estado anterior com um comando. A ferramenta mais utilizada no mundo para essa tarefa é o Git (CHACON; STRAUB, 2014).

8.1 Por que aprender versionamento?
Benefício Descrição
Histórico completo Cada alteração é registrada com data, autor e descrição
Reversão segura Voltar a qualquer versão anterior a qualquer momento
Colaboração Múltiplas pessoas podem trabalhar no mesmo projeto simultaneamente
Ramificação (branches) Criar versões paralelas para experimentar sem afetar o código principal
Padrão da indústria Git é requisito em praticamente toda vaga de programação

9. Git: Comandos Essenciais

O Git é um sistema de controle de versão distribuído, criado por Linus Torvalds em 2005 (o mesmo criador do Linux). Ele funciona rastreando as alterações em arquivos e permitindo que múltiplas versões do projeto coexistam. O Git é utilizado em conjunto com plataformas de hospedagem como GitHub, GitLab e Bitbucket (CHACON; STRAUB, 2014).

DIRETÓRIO DE TRABALHO (seus arquivos) git add STAGING AREA (ÍNDICE) (preparados) git commit REPOSITÓRIO LOCAL (histórico local) git push REMOTO (GitHub) (nuvem) git pull (trazer alterações do remoto)
Figura 6 — O fluxo de trabalho do Git: do diretório de trabalho ao repositório remoto. Fonte: adaptado de Chacon e Straub (2014).
9.1 Comandos essenciais
Comando Função Exemplo
git init Inicializa um repositório Git no diretório atual git init
git status Mostra o estado atual dos arquivos git status
git add Adiciona arquivos à staging area git add programa.py
git commit Registra as alterações no histórico local git commit -m "Adiciona função de média"
git log Exibe o histórico de commits git log --oneline
git diff Mostra as diferenças desde o último commit git diff
git push Envia commits para o repositório remoto git push origin main
git pull Traz alterações do repositório remoto git pull origin main
git clone Copia um repositório remoto para o computador git clone https://github.com/user/repo.git
Terminal — Fluxo básico do Git
# 1. Criar uma pasta e inicializar o Git
mkdir meu_projeto
cd meu_projeto
git init

# 2. Criar um arquivo Python
echo 'print("Olá, Git!")' > programa.py

# 3. Verificar o status (arquivo aparece como "untracked")
git status

# 4. Adicionar o arquivo à staging area
git add programa.py

# 5. Registrar a alteração (commit)
git commit -m "Primeiro commit: programa inicial"

# 6. Ver o histórico
git log --oneline
# a1b2c3d Primeiro commit: programa inicial
🔢 Boas práticas de commits
Faça commits pequenos e frequentes, cada um representando uma alteração lógica e funcional. Escreva mensagens de commit claras e descritivas, no imperativo: "Adiciona função de validação de CPF", "Corrige bug no cálculo de média", "Remove código duplicado". Isso facilita enormemente a navegação pelo histórico (CHACON; STRAUB, 2014).

10. Git no Google Colab

Embora o Google Colab não possua o Git integrado de forma visual, é possível utilizar comandos Git diretamente nas células do Colab usando o prefixo ! (que executa comandos do terminal). Isso permite clonar repositórios, salvar seu trabalho no GitHub e colaborar com colegas sem sair do navegador (CHACON; STRAUB, 2014).

10.1 Clonando um repositório no Colab
Google Colab — Usando Git
# Clonar um repositório público do GitHub
!git clone https://github.com/usuario/meu-projeto.git

# Entrar na pasta do projeto
%cd meu-projeto

# Verificar os arquivos
!ls -la

# Ver o histórico de commits
!git log --oneline -5
10.2 Salvando alterações do Colab no GitHub
Google Colab — Salvando no GitHub
# 1. Configurar identidade (necessário na primeira vez)
!git config --global user.name "Seu Nome"
!git config --global user.email "seu@email.com"

# 2. Verificar alterações
!git status

# 3. Adicionar e fazer commit
!git add .
!git commit -m "Atualiza funções do exercício 3"

# 4. Enviar para o GitHub (requer autenticação)
# Para repositórios privados, use um Personal Access Token:
!git push https://<TOKEN>@github.com/usuario/repo.git main
⚠ Segurança no Colab
Nunca inclua senhas ou tokens de acesso diretamente em células do Colab que possam ser compartilhadas. Use as Secrets do Colab (ícone de chave 🔑 na barra lateral) para armazenar seu Personal Access Token do GitHub de forma segura. O token pode ser acessado via from google.colab import userdata; token = userdata.get('GITHUB_TOKEN').
10.3 Versionamento nativo do Colab

Além do Git, o próprio Google Colab oferece um sistema de versionamento embutido. No menu Arquivo → Histórico de versões (ou Ctrl + Shift + H), é possível ver todas as versões salvas automaticamente do notebook, comparar diferenças e restaurar versões anteriores. Para projetos simples e trabalhos individuais, essa funcionalidade pode ser suficiente.

💡 Quando usar cada ferramenta
Histórico do Colab: ideal para trabalhos individuais, exercícios de aula e experimentação rápida.
Git + GitHub: ideal para projetos maiores, colaboração em equipe, portfólio profissional e quando você precisa de controle preciso sobre cada alteração.

Exemplo Integrador: Sistema de Notas com Funções

Para consolidar todos os conceitos desta Parte III — decomposição, funções com parâmetros e retorno, escopo de variáveis e boas práticas —, vamos construir um sistema de gerenciamento de notas completo e modular:

Python — Sistema de Notas (Exemplo Integrador)
# ================================================
# Sistema de Notas - Exemplo Integrador (Parte III)
# Conceitos: decomposição, def, parâmetros, return,
#            escopo, docstrings, boas práticas
# ================================================

# --- Constantes globais ---
NOTA_APROVACAO = 7.0
NOTA_RECUPERACAO = 5.0

# --- Funções de entrada ---
def ler_nota(mensagem):
    """Lê uma nota válida (0 a 10) com tratamento de erro."""
    while True:
        try:
            nota = float(input(mensagem))
            if 0 <= nota <= 10:
                return nota
            print("  A nota deve estar entre 0 e 10.")
        except ValueError:
            print("  Entrada inválida! Digite um número.")

def ler_notas_turma():
    """Lê as notas de todos os alunos da turma."""
    n = int(input("Quantos alunos na turma? "))
    turma = []
    for i in range(1, n + 1):
        nome = input(f"Nome do aluno {i}: ")
        nota = ler_nota(f"  Nota de {nome}: ")
        turma.append({"nome": nome, "nota": nota})
    return turma

# --- Funções de processamento ---
def calcular_media(turma):
    """Retorna a média das notas da turma."""
    notas = [aluno["nota"] for aluno in turma]
    return sum(notas) / len(notas) if notas else 0

def classificar_aluno(nota):
    """Retorna a situação do aluno com base na nota."""
    if nota >= NOTA_APROVACAO:
        return "Aprovado"
    elif nota >= NOTA_RECUPERACAO:
        return "Recuperação"
    else:
        return "Reprovado"

def contar_situacoes(turma):
    """Conta aprovados, em recuperação e reprovados."""
    contagem = {"Aprovado": 0, "Recuperação": 0, "Reprovado": 0}
    for aluno in turma:
        situacao = classificar_aluno(aluno["nota"])
        contagem[situacao] += 1
    return contagem

# --- Funções de saída ---
def exibir_relatorio(turma):
    """Exibe o relatório completo da turma."""
    media = calcular_media(turma)
    contagem = contar_situacoes(turma)
    notas = [a["nota"] for a in turma]

    print(f"\n{'='*45}")
    print(f"{'RELATÓRIO DA TURMA':^45}")
    print(f"{'='*45}")
    print(f"{'Nome':<20} {'Nota':>6} {'Situação':<15}")
    print(f"{'-'*45}")

    for aluno in turma:
        sit = classificar_aluno(aluno["nota"])
        print(f"{aluno['nome']:<20} {aluno['nota']:>6.1f} {sit:<15}")

    print(f"{'-'*45}")
    print(f"  Média da turma:  {media:.1f}")
    print(f"  Maior nota:      {max(notas):.1f}")
    print(f"  Menor nota:      {min(notas):.1f}")
    print(f"  Aprovados:       {contagem['Aprovado']}")
    print(f"  Recuperação:     {contagem['Recuperação']}")
    print(f"  Reprovados:      {contagem['Reprovado']}")
    print(f"{'='*45}")

# === PROGRAMA PRINCIPAL ===
turma = ler_notas_turma()
exibir_relatorio(turma)

Conclusão

Nesta Parte III, elevamos significativamente o nível de organização e qualidade dos nossos programas. Começamos compreendendo a importância da decomposição de problemas e do pensamento computacional, habilidades que transcendem qualquer linguagem de programação. Em seguida, aprendemos a criar funções customizadas com def — com parâmetros posicionais, valores padrão, argumentos nomeados e retorno de valores via return.

O estudo do escopo de variáveis (local, global e a regra LEGB) nos mostrou como Python organiza os nomes internamente, e por que devemos evitar variáveis globais modificáveis em favor de funções puras. As boas práticas da PEP 8 e PEP 257 nos orientam a escrever código Pythônico, legível e profissional.

Finalmente, demos os primeiros passos no versionamento de código com Git, compreendendo o fluxo add → commit → push e como utilizar o Git diretamente no Google Colab. Essa habilidade é indispensável para qualquer programador que deseje trabalhar de forma profissional e colaborativa.

O próximo passo natural nesta jornada é explorar as estruturas de dados compostas (listas, tuplas, dicionários e conjuntos), que ampliarão enormemente a capacidade dos seus programas de lidar com coleções de dados do mundo real.

🚀 Continue Aprendendo!
Desafie-se: refatore um programa antigo usando funções; crie uma biblioteca de funções utilitárias (conversores de temperatura, validadores de dados, calculadoras); abra uma conta no GitHub e publique seus primeiros projetos. Cada função que você escreve é um tijolo na construção do seu repertório como programador. Como reforça (SWEIGART, 2020), a melhor forma de aprender a programar é programando!

Referências
CHACON, S.; STRAUB, B. Pro Git. 2. ed. New York: Apress, 2014. Disponível em: <https://git-scm.com/book/pt-br/v2>. Acesso em: 5 maio 2026.
CORMEN, T. H. et al. Introduction to algorithms. 3. ed. Cambridge: MIT Press, 2009. (Tradução brasileira: Algoritmos: Teoria e Prática. 3. ed. Rio de Janeiro: Elsevier, 2012.)
MATTHES, E. Curso Intensivo de Python: Uma Introdução Prática e Baseada em Projetos à Programação. 2. ed. São Paulo: Novatec, 2019.
MENEZES, N. N. C. Introdução à Programação com Python: Algoritmos e Lógica de Programação para Iniciantes. 3. ed. São Paulo: Novatec, 2019.
PAIVA, F. Introdução a Python. Natal: Editora IFRN, 2021. Disponível em: <https://memoria.ifrn.edu.br/bitstream/handle/1044/2090/EBOOK%20-%20INTRODU%C3%87%C3%83O%20A%20PYTHON%20%28EDITORA%20IFRN%29.pdf>. Acesso em: 12 mar. 2026.
PYTHON SOFTWARE FOUNDATION. Python Documentation. Disponível em: <https://docs.python.org/3/>. Acesso em: 12 mar. 2026.
SWEIGART, A. Automatize Tarefas Maçantes com Python: Programação Prática para Verdadeiros Iniciantes. 2. ed. São Paulo: Novatec, 2020.
WING, J. M. Computational Thinking. Communications of the ACM, v. 49, n. 3, p. 33–35, mar. 2006. Disponível em: <https://doi.org/10.1145/1118178.1118215>. Acesso em: 5 maio 2026.

Fonte:
Visto no Brasil Acadêmico

Comentários

BLOGGER

$show=mobile

Nuvem de Categorias


Coluna Gastroturismo
Nome

#existepesquisanobrasil,2,Abelha,3,Acessibilidade,25,Acessórios,2,Acidente,52,Acústica,16,Adestramento,5,Administração,45,Aerodinâmica,4,Aeronáutica,9,África,7,Agência Bori,1,Agência Brasil,25,Agência FAPESP,5,Agência Fiocruz,6,Agência Porvir,1,Agência Senado,2,Agência USP,5,Agnotologia,1,Agricultura,7,Agropecuária,4,AirBNB,1,Albert Einstein,1,Alcoolismo,9,Alemanha,10,Alemão,4,Alerta,2,Algoritmo,8,Alimento,1,Alzheimer,4,Amazon,5,Amazônia,5,América Latina,1,Análise Combinatória,1,Análise de Texto,2,Anatomia,8,Android,3,Angola,1,Animação,52,Animais de Estimação,6,Animal,2,Antropologia,14,Apicultura,9,App,9,Apple,5,Apresentação,4,aquário,1,Argentina,4,Armamento,1,Arqueologia,6,arquitetura,33,Arte,173,Astrobiologia,3,Astrofísica,4,Astronomia,36,Ativismo,35,Áudio,3,Audio FX,2,Áustria,1,Autismo,2,Auto-ajuda,10,Automobilismo,16,Automóvel,22,aventura,3,Aviação,5,Aviônica,8,Bahia,2,Balonismo,3,Banco Central,1,Banco de Dados,5,Beber e Dirigir,1,biblioteconomia,6,Bicicleta,1,Biografia,18,Biologia,176,Biologia Marinha,15,bioquímica,7,Biotecnologia,25,Bitcoin,2,Blog,29,Blogger,33,Boato,6,Bomba,1,Botânica,6,BRASA,1,BRASA Leads,1,Brasil,41,Brasília,17,BRIC,1,Browser,11,Bugs,3,CAD,3,Calor,2,Caltech,1,Câmera lenta,1,Campanha,47,Canadá,1,cardiologia,16,Carnaval,2,carreira,3,Cartografia,3,Casemods,1,Caso Isabella Nardoni,1,Caso Snowden,1,Ceará,1,Celebridades,6,celular,24,Células-Tronco,5,Cérebro,2,Charge,22,ChatGPT,2,China,23,Cibercultura,3,Ciclovia,1,Cidadania,40,Ciência,225,Cinema,70,Climatologia,3,Clip,1,Cliparts,1,Cloud computing,4,Coaching,12,Comédia,2,competência,2,Complemento de dois,1,Comportamento,277,Computação,100,Computação em grade,5,Computação forense,3,Computação Gráfica,140,Computação Móvel,1,Computação Quântica,1,Comunicação e Marketing,153,Concurso,2,Concurso Cultural de Natal,1,Concursos Público,2,Concursos Públicos,4,Conectômica,1,Conferência,1,Congresso em Foco,1,Conspiração,2,Consumidor,7,Consumismo,3,contabilidade,2,Contos,55,Copa do Mundo,26,Cordel,3,Coreia do Norte,1,Coreia do Sul,1,Corpo,2,Coruja,1,cosmética,3,Cosmologia,21,Covid-19,99,Crash Course,1,Criança,1,Criatividade,4,Crime,49,Crime Digital,9,crise,11,crise econômica,8,Croácia,1,crônica,6,crônicas,5,Cronologia,1,CSS,3,Cuba,4,Culinária,8,Cultura,18,Curiosidades,113,custos fixo,1,custos variáveis,1,Dale Dougherty,2,Dança,6,DAO,1,Darwin,12,Davos,1,Debate,3,Decoração,1,demência,1,Demografia,3,Denúncia,12,Dermatologia,6,Desastre Natural,14,Descoberta,2,Desenho instrucional,19,Desenvolvimento de jogos,17,Desenvolvimento Pessoal,1,Design,33,Design Instrucional,19,Destaque,9,Dia das Mães,1,Dia do professor,1,diabetes,6,Dicas,66,Didática,1,Dieta,4,Dinamarca,1,diplomacia,3,Direito,188,Direito Eleitoral,2,Direito Internacional,30,Direito Militar,1,Direito Trabalhista,1,Direito Tributário,2,Direitos Autorais,4,Direitos Humanos,39,Disney,8,Distrito Federal,4,Documentário,72,Doutorado,1,download,3,Drogas,7,Drone,3,Dubai,1,e-Book,2,e-governo,2,EBC,1,Ecologia,89,Economia,119,Editoração Eletrônica,1,Educação,424,Educação a Distância,190,Educação Corporativa,6,educação física,19,Educação sexual,6,Efeitos Sonoros,4,Egiptologia,2,Eleições,30,Eleições 2014,12,Eleições 2018,5,Eleições 2020,2,Eleições 2022,1,Eletricidade,10,eletrônica,4,Elon Musk,1,Em Operários,1,Embrapa,4,empreendedorismo,7,enciclopédia,1,endocrinologia,6,Enem,3,Energia,17,Energia Alternativa,18,Energia Nuclear,12,Enfermagem,1,Engenharia,70,Engenharia Agrícola,1,Engenharia Civil,6,Engenharia de materiais,18,Engenharia de Software,15,Engenharia Genética,32,Engenharia Mecânica,2,Enretenimento,1,Ensino a Distância,11,Ensino Superior,5,Entomologia,7,Entretenimento,47,Entrevista,91,Entrevista.,1,Epidemiologia,70,Epistemologia,1,Equador,1,Escândalo,6,Escritório,1,ESMPU,1,Espaço,74,Espanha,1,Espanhol,2,Espeleologia,1,Espetáculo,8,Espionagem,20,Esporte,44,Estação,1,Estágio,2,Estatísticas,40,Estética,1,estrutura de dados,1,Ética,32,EUA,20,Europa,2,Evento,59,Evolução,5,Exercícios físicos,2,Exobiologia,3,experiência,43,fábulas,3,Facebook,20,Família,1,Farmacologia,25,Favo,1,Feminismo,2,Férias,1,Ferramentas,15,FIFA,2,Filantropia,4,Filmes,20,Filosofia,50,Finep,2,Finlândia,3,Fintech,1,Firefox,1,Física,119,Física Quântica,4,Fisiologia,10,Fisioterapia,6,Flagrante,2,Flamengo,1,Folclore,3,Fome,1,Fomento,1,Fonética,1,Fonoaudiologia,7,Fotografia,46,Fotos em 360 graus,6,França,10,Francês,4,Frase,3,Fraude,5,Freeware,75,Futebol,38,Futurologia,95,gadget,87,gadgets,1,Gafe,2,Gamificação,8,Gastroenterologia,5,Gastronomia,9,Gastroturismo,7,Geek,2,Genética,46,Geofísica,1,Geografia,57,Geologia,12,Geometria,6,geopolítica,22,Gerenciamento do Tempo,2,Geriatria,13,Gestão de Competências,3,Gestão de Configuração,2,Gestão de Pessoas,11,Gestão de Projetos,23,Gestão do conhecimento,7,Ginecologia,3,Glass,1,Golpe de Estado,1,Google,81,Governo,4,GPS,1,Gradiente,1,gramática,15,Gravidez,1,Grécia,1,Grécia Antiga,2,Guerra,43,Guerra Civil,2,Guinness,1,H2,2,Haiti,3,hardware,39,Henry Ford,1,História,217,HIV,1,Hololens,2,homenagem,46,Horologia,1,HPV,1,HTML,6,Humor,213,Humor Negro,9,IBGE,3,IBM,4,ICIJ,2,Idioma,57,IESB,2,IHC,8,ilo,29,ilusão,36,ilusionismo,5,Imagem 3D,16,Imagens,7,Imagine Cup,1,Império Romano,8,Imprensa,34,Impressora 3D,22,Imunologia,8,Incêndio,2,Inclusão digital,8,Índia,4,Índios,1,Infectologia,36,Infográfico,57,Informática,38,Inglaterra,4,Inglês,26,Inovação,206,Inspiração,1,Inteligência Artificial,168,intercâmbio,1,Interface,205,Interfaces Hápticas,24,Internacional,23,Internacionalização da Amazônia,3,Internet,166,Internet das Coisas,2,Inundação,2,Invenção,20,Inventos,6,iPad,1,IPEA,1,iphone,3,Irã,3,Iraque,1,Israel,7,Itália,2,Japão,5,Java,2,Java.,2,jogos,12,Jogos de Tabuleiro,5,Jogos educativos,20,Jogos Olímpicos,10,Jornalismo,72,José Saramago,1,Justiça,4,Ken Robinson,1,Kinect,10,Le Monde Diplomatique Brasil,9,Le Monde Diplomatique Brasil,1,Letras,2,Lexicografia,5,Liderança,4,Life Hacking,20,línguas estrangeiras,3,Linguística,11,Literatura,59,Livro,73,Lógica,26,Logística,4,Loterias,4,Lua,1,Maçonaria,4,Malásia,2,Malvinas,2,Malware,1,Mapa,96,Mário Sérgio Conti,1,Marte,4,Mastologia,1,Matemática,84,Matemática Financeira,1,maternidade,1,MEC,1,Mecânica,8,Mecânica dos Fluidos,2,Mecatrônica,47,Medalha Fields,1,Medicina,569,Medicina Esportiva,2,Medicina Veterinária,4,Meio Ambiente,131,Mel,1,melanoma,1,Memória,5,memorização,4,Mente,4,Mercado de Trabalho,85,mercosul,1,Mestrado,4,Metaverso,2,meteorologia,12,Metodologia Científica,60,México,1,Microbiologia,4,Microsoft,16,Mídia Social,61,Militar,16,Mineralogia,1,Mistério,3,MIT,15,Mitologia,2,Mobilidade,1,Mobilidade Urbana,9,Moçambique,1,Moda,1,MonaVie,1,Montanhismo,1,Moodle,7,Mossad,1,Motivação,1,Movimento Maker,3,MSF,1,Mudança Climática,30,Mulher,4,Multimídia,14,museu,16,Música,90,MVC,1,Nanotecnologia,37,Nasa,19,Natação,2,Natal,17,Natureza,2,Nefrologia,1,Negócios,31,Netflix,1,Neurociência,97,Neurologia,81,Nicolelis,1,Nordeste,2,Noruega,2,notícias,8,Novidades,18,Novo Enem,2,Números,2,Nutrição,75,Obama,1,Obesidade,11,Observatório da Imprensa,27,Obstetrícia,4,OCDE,1,Oceanografia,7,odontologia,10,Offshore Leaks,2,oftalmologia,11,Olimpíadas,9,oncologia,50,ONU,10,OpenAI,1,Opinião,107,Óptica,17,Oracle,1,Oriente Médio,5,Orkut,2,Ornitologia,1,ortografia,3,Ortopedia,4,Ótica,9,Otorrinolaringologia,2,Oxfam,3,Pacifismo,1,Paginadores,1,paleontologia,4,Palestina,1,Paquistão,1,Pará,2,Paraguai,2,parkinson,2,Passeio virtual,1,Patinação,1,Paulo Freire,1,Pedagogia,8,Pediatria,6,Pensamentos,3,performance,3,Periférico,1,Pesca,2,Pesquisa,267,Petição,1,Petrobrás,10,Petróleo,13,Photoshop,5,Pirataria,7,planilha de custo,1,Playstation 3,2,Plebiscito,3,Pneumologia,1,Podcast,7,Poesia,29,Política,323,Polônia,1,Portugal,9,português,20,Pós-graduação,2,Pré-sal,5,Prêmio Nobel,7,primatologia,1,Primeira Guerra Mundial,2,privacidade,25,produtividade,8,professor Hamilton Alves,2,Programa Gratuito,4,Programação,70,Projeção Mapeada,1,Projeto Truco,2,Promoção,1,Propaganda,5,Psicanálise,1,Psicologia,286,Psicologia Animal,26,Psiquiatria,17,Pública,14,publicidade,19,Publieditorial,6,PUC Minas,1,Quadrinhos,11,Quads,5,Qualidade,3,Qualidade de Vida,12,química,34,REA,2,realidade aumentada,47,realidade diminuída,2,Realidade Misturada,5,Realidade Virtual,50,Reconhecimento de imagem,12,Reconhecimento de voz,3,Recorde,1,Recoverit,1,Recuperar vídeos,1,Redação,1,redes,12,Referência,5,Referendo,1,Reforma Política,3,Reino Unido,2,Relacionamento,2,Relações Internacionais,41,Religião,44,Responsabilidade Social,4,Retrospectiva,1,Review,15,Rio 2016,6,Rio de Janeiro,3,Rio Grande do Norte,1,Rio Grande do Sul,1,Robert Oppenheimer,3,Robô,49,robótica,52,Roda Viva,49,Roma,6,roteiro,1,RSA,1,RTP,1,Rússia,6,Samsung,1,Sanitarismo,5,Santa Catarina,1,São Paulo,5,Saúde,625,Savant,1,Segunda Guerra Mundial,26,Segurança,128,Segurança da Informação,69,Seleção Natural,3,Séries,2,serviço,1,Serviço Online,1,Sexologia,2,sexualidade,5,Show,7,SIGGRAPH,1,Simulação,37,Singularity University,1,Síria,3,Sismologia,2,Sistema operacional,4,Sistemas de Numeração,1,Sites de Busca,22,Sociedade,5,Sociologia,55,Software,34,Software Livre,24,Sol,2,Sono,4,Sony,3,SOPA,2,Star Wars,1,Startup,2,Steve Cutts,1,Steve Jobs,1,Suécia,3,Sugestão de presentes,67,Sun,1,supercomputadores,2,Sustentabilidade,5,Tabagismo,6,Taiwan,1,Talento precoce,1,Taxas Equivalentes,1,Taxidermia,1,Teatro,27,Técnicas de Estudo,3,Tecnologia,601,Tecnologia da Informação,30,TED,448,TED-Ed,48,TedMed,2,TEDx,5,TEDx Rio+20,1,TEDxAmazônia,1,TEDxAsaSul,1,Telefonia,61,Televisão,45,Temas,1,Tempo,2,Tendência,1,Tendências,13,Teologia,6,teoria das supercordas,1,Teoria dos Jogos,1,Terremoto,9,Terrorismo,15,Tesla,1,Testes,17,Thaís Victer,2,ticker,2,TikTok,1,Tipologia,8,Tomada de Decisão,1,tradução,5,Trânsito,12,transporte,59,Tributo,3,Trigonometria,1,Tubarão,2,Tunísia,1,Turismo,30,Tutorial,23,Twitter,10,Uber,7,Ucrânia,11,UFC,1,UFES,1,UFG,2,UFMG,1,ufologia,5,UFRJ,3,UFSC,1,UNB,1,UNESCO,1,Unicamp,4,UNIFESP,1,UNIP,1,universidade,6,Universidade Corporativa,1,Universidade da Califórnica,1,Universidade da Geórgia,1,Universidade da Pensilvânia,1,Universidade de Brasília,1,Universidade de Cambridge,2,Universidade de Chicago,1,Universidade de Columbia,1,Universidade de Michigan,1,Universidade de Princeton,1,Universidade de Rochester,1,Universidade de Washington,3,University College London,1,Urbanismo,26,Urologia,2,URSS,1,User Experience,1,USP,11,Utilidade Pública,4,Utilitário,3,Vale,1,Vaticano,1,Veículo Autônomo,9,Venezuela,1,Ventriloquismo,2,Verão,1,vestibular,3,Vestimenta,1,Vida Digital,7,Vida Moderna,18,Vida Selvagem,10,Videogame,120,Vídeos,990,Vídeos 360,1,Vietnã,1,Violência,5,Vírus,18,Visão Computacional,10,Vôlei,1,Vulcanologia,8,Watergate Política,1,WCIT 2016,2,WCIT 2017,1,Web,1,Web 2.0,29,Web Application,161,Web Semântica,2,Web Seminar,1,webdesign,13,Webinar,2,widget,2,WikiLeaks,37,Wikipedia,4,Windows,5,Xadrez,2,YouTube,6,Zika,1,Zimbábue,1,Zoologia,59,
ltr
item
Brasil Acadêmico: Introdução à programação usando Python – Parte III
Introdução à programação usando Python – Parte III
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1M7Zs6QxuQ-KBfYw8P8YjLVGwAgA0vu97I3Pq_vGoXuM2QUvVCI8LEB2hsdlmRDClsRx8vBwm-FbJBYhuqRbbmFg0zmLGxbETeBy7XKTDTcQOTJC6-FN_BXmGMt75xVbRScnobTfEoDSwe2qDUgvZtRFD6G6PX3TplIsTDG_Ww9flpbCukS6ju2zCT-w/s600/escopoDeVar00.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1M7Zs6QxuQ-KBfYw8P8YjLVGwAgA0vu97I3Pq_vGoXuM2QUvVCI8LEB2hsdlmRDClsRx8vBwm-FbJBYhuqRbbmFg0zmLGxbETeBy7XKTDTcQOTJC6-FN_BXmGMt75xVbRScnobTfEoDSwe2qDUgvZtRFD6G6PX3TplIsTDG_Ww9flpbCukS6ju2zCT-w/s72-c/escopoDeVar00.png
Brasil Acadêmico
http://blog.brasilacademico.com/2026/05/introducao-programacao-usando-python.html?m=0
http://blog.brasilacademico.com/?m=0
http://blog.brasilacademico.com/
http://blog.brasilacademico.com/2026/05/introducao-programacao-usando-python.html
true
3049085869098582068
UTF-8
Todos os posts carregados Nenhum post encontrado Ver todos Saiba mais Responder Cancelar resposta Apagar Por Início Páginas POSTS Ver todos Especialmente para você Categoria Arquivo Busca Todos os posts Nenhum post coincide com sua busca Início Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sáb Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez Agora 1 minuto atrás $$1$$ minutos atrás 1 hora atrás $$1$$ horas atrás Ontem $$1$$ dias atrás $$1$$ semanas atrás Mais de 5 semanas atrás Seguidores Seguir Conteúdo PREMIUM fechado Passo 1: Compartilhar com a rede social Passo 2: Clique no link da sua rede social Copiar todo código Selecionar todo código Todos os código copiados para a memória Não posso copiar o código / textos, favor teclar [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de Conteúdo