Ramos da InformáticaPythonAprender Python com ChatGPT com Eficiência (Guia Prático)

Aprender Python com ChatGPT com Eficiência (Guia Prático)

-

ChatGPT impressiona desenvolvedores mais experientes, mas iniciantes em programação ou em uma nova linguagem precisam ficar muito atentos ao interpretar as sugestões

Alguns desenvolvedores experientes dizem que o ChatGPT e outras ferramentas atuais de IA podem ajudar todos a aprender programação. Mas será que esse método é confiável para quem está começando a usar código, e não tem tanta base para avaliar se as soluções sugeridas são adequadas?

É bastante claro que o ChatGPT e similares já estão ajudando muitos a trabalhar com mais eficiência. No entanto, a maioria das pessoas que eu conheço com esse tipo de experiência já são programadores altamente qualificados, bastante capazes de avaliar se as sugestões são adequadas.

Para essas pessoas, o ChatGPT é como um colega que está sempre pronto para colaborar, que tem recomendações bem úteis na maioria das vezes, mas que de vez em quando dá sugestões muito ruins. Se você consegue filtrar as ideias boas das ruins, provavelmente poderá trabalhar bem com esse tipo de assistente automatizado.

Dica de Leitura: Se você está começando a aprender programação e está procurando maneiras de melhorar suas habilidades, especialmente em Python, é importante não apenas contar com ferramentas como o ChatGPT, mas também praticar em situações reais, como as encontradas em entrevistas técnicas. Para isso, vale a pena conferir nossa dica em Entrevista Técnica Python: Não Trave na Hora do Live Coding, que oferece insights valiosos para ajudá-lo a se sentir mais seguro em sua jornada de aprendizado.

Mas, aqui, eu quero me concentrar no desempenho da iteração atual do ChatGPT e de seus similares para pessoas que são mais novas na programação.

Um breve contexto, e um ranking de vencedores

Suponha que você tem uma lista de nomes, e você quer criar um programa para exibir cada um desses nomes. Em Python, podemos usar o loop for: esta função repete a mesma operação para os itens de uma lista – por exemplo, mostrá-los um por um na tela.

Os loops for em Python não têm uma variável de índice – ou seja, que indiquem se o termo de uma lista está em 1º lugar, 2º lugar, 3º lugar e assim por diante. Mas e quando você deseja trabalhar com o índice de cada item dentro de um loop?

Imagine uma lista de pessoas que terminaram uma corrida. Queremos exibir um número ao lado de cada vencedor, representando a posição em que chegaram. Aqui está um loop for para exibir os vencedores, sem nenhum número:

# vencedores.py

vencedores = ["elisa", "renan", "camila"]

print("Os vencedores são:")
for vencedor in vencedores:
    print(vencedor.title())

Esta é a saída:

Os vencedores são:
Elisa
Renan
Camila

Mas nós gostaríamos que fosse assim:

Os vencedores são:
1. Elisa
2. Renan
3. Camila

Vou perguntar para o ChatGPT como obter o índice das variáveis em um loop for, e pedir para a IA avaliar suas próprias sugestões. Esta é uma pergunta com uma resposta correta bastante óbvia, e que também pode ter algumas alternativas possíveis.

Você poderia usar uma variável com counter para gerar essa saída, mas seria melhor usar apenas o índice de cada item. Imagine por um momento que ainda não sabemos como fazer isso; nós só fomos apresentados a loops simples em Python, como mostrado acima.

A resposta inicial do ChatGPT

As respostas da inteligência artificial da OpenAI são altamente dependentes da maneira como você pergunta. Elas também não são muito consistentes: você pode fornecer exatamente a mesma série de prompts em sessões diferentes e obter sugestões bastante distintas.

Eu utilizei frases em linguagem natural nesta sessão, como alguém que usa um mecanismo de busca como o Google há muito tempo.

Na primeira interação com o ChatGPT para esta sessão, eu escrevi: “loop for no Python obter índice de cada item”. Esta foi a resposta:

Você pode usar a função enumerate() para obter o índice de cada item em um loop for no Python.

minha_lista = [1, 2, 3, 4, 5]
for index, item in enumerate(minha_lista):
   print(index, item)

A função enumerate() retorna um iterador que gera pares do índice e do item correspondente. O loop for atribui esses valores para as variáveis ‘index’ e ‘item’ respectivamente, para você conseguir trabalhar com elas dentro do loop.

Cuidado ao tentar usar o ChatGPT para aprender Python
Aprender Python com ChatGPT com Eficiência (Guia Prático) 4

Essa sugestão funciona e é a solução mais adequada para esse prompt. Aqui está o nosso programa, usando esta proposta:

# vencedores_ranking.py

vencedores = ["elisa", "renan", "camila"]

print("Os vencedores são:")
for index, vencedor in enumerate(vencedores):
    ranking = index + 1
    print(f"{ranking}. {vencedor. title()}")

E aqui está a saída, com a posição de cada competidor:

Os vencedores são:
1. Elisa
2. Renan
3. Camila

Mas e se não soubéssemos que esta é a solução mais adequada e quiséssemos dar seguimento a esta questão? Faremos isso mais abaixo, mas primeiro vamos falar sobre código idiomático.

O que é código idiomático?

O código idiomático usa os recursos de uma linguagem de programação de um jeito adequado ao problema em questão. Ele tende a ser conciso, fácil de verificar e fácil de expandir – mas nem sempre parece correto para alguém familiarizado com outra linguagem.

Imagine uma pessoa com muita experiência no uso de Java. Ela criou vários projetos funcionais em Java, mantendo-os e otimizando ao longo do tempo. Ela decide aprender Python e, como já sabe programar em outra linguagem, ela absorve a sintaxe do Python rapidamente.

Muitas vezes, alguém nessa situação escreverá um código Python que ainda parece Java. A pessoa está traduzindo, sem perceber, as soluções do Java que vêm à mente para a sintaxe do Python, em vez de considerar a melhor forma de resolver o problema usando tudo o que o Python oferece.

Isso significa que o código em questão está sintaticamente correto, mas não é idiomático.

Para ser claro, esse fenômeno também acontece ao contrário. Programadores experientes em Python podem aprender Java rapidamente e tentar escrever soluções pythônicas em Java. Programadores experientes de Java revisarão esse código e o acharão deselegante e impossível de manter.

Ao avaliar um código, geralmente analisamos estes fatores críticos:

O código funciona? (Ele gera os resultados corretos?)

O código é eficiente o suficiente para a carga de trabalho atual? (Ele roda rápido o bastante?)

O código é sustentável? (Outros programadores familiarizados com esta linguagem entenderiam o que você escreveu?)

Esse último ponto é muito importante, pois o código idiomático é muito mais fácil de manter do que o código não idiomático. Toda linguagem de programação é projetada de forma que seus recursos devam ser usados de uma certa maneira para resolver tipos específicos de problemas.

Qualquer que seja a linguagem de programação, é necessário aprender os modos de pensar dela e escrever um código idiomático a partir daí.

No entanto, o ChatGPT pode ser como um programador competente que acabou de aprender uma nova linguagem. Seu código é quase sempre sintaticamente correto, mas pode não ser muito idiomático.

ChatGPT lista outras abordagens

Estando ciente da questão do código idiomático, mas me colocando na mentalidade de uma pessoa que é iniciante em Python, quero perguntar ao ChatGPT se há outras maneiras de abordar aquela questão dos vencedores.

Eu digitei apenas o seguinte: “existem outras abordagens?”. A resposta:

Sim, há outras maneiras de obter o índice de cada item em um loop for do Python. Aqui estão alguns exemplos:

1. Usando a função range():

minha_lista = [1, 2, 3, 4, 5]
for i in range(len(minha_lista)):
   print(i, minha_lista[i])

2. Usando a função zip():

minha_lista = [1, 2, 3, 4, 5]
for i, item in zip(range(len(minha_lista)), minha_lista):
   print(i, item)

3. Usando compreensão de lista:

minha_lista = [1, 2, 3, 4, 5]
for i, item in [(i, item) for i, item in enumerate(minha_lista)]:
   print(i, minha_lista[i])

Todos os exemplos acima vão produzir a mesma saída. Você pode escolher uma abordagem que considere a mais legível e fácil de entender.

Aprender a programar Python com ChatGPT
Aprender Python com ChatGPT com Eficiência (Guia Prático) 5

Isso não é muito bom.

A primeira sugestão, usar range(), não é nem um pouco apropriada em Python. Essa é a ação de loop usada em linguagens semelhantes ao C. Esta é uma forma em que você mesmo precisa gerenciar toda a indexação do loop. O Python foi escrito especificamente para não exigir que todo programador escreva esse tipo de código.

A segunda sugestão, envolvendo zip(), não é muito melhor.

Esta é uma função muito útil para se conhecer, mas não é apropriada para usar nessa situação – seria como escrever sua própria implementação de enumerate(), um trabalho desnecessário.

A terceira sugestão, embora sintaticamente válida, é um lixo total. Está usando enumerate() em uma compreensão de lista, da qual fazemos um loop para extrair os resultados da enumeração. Veja como esse tipo de loop ficaria em nosso exemplo inicial:

for i, vencedor in [(i, vencedor) for i, vencedor in enumerate(vencedores)]:
    print(f"{i+1}. {vencedor.title()}")

Olha a quantidade de vezes que precisamos escrever “i, vencedor” na mesma linha! Não consigo imaginar nenhuma linguagem na qual essa seja uma maneira remotamente apropriada de resolver esse problema.

Algumas pessoas tentam escrever códigos excessivamente complexos, pensando que isso tornará mais difícil para a empresa demiti-los. Talvez esta sugestão da IA seja atraente para esse tipo de gente?

O real problema com as respostas do ChatGPT

Essas sugestões de código não são o verdadeiro problema na resposta do ChatGPT. O maior entrave é a forma em que ele avalia suas próprias sugestões:

Todos os exemplos acima vão produzir a mesma saída. Você pode escolher uma abordagem que considere a mais legível e fácil de entender.

Superficialmente, isso talvez pareça fazer sentido. A primeira afirmação está correta: sim, todas essas abordagens geram o mesmo tipo de saída.

A segunda declaração é problemática, porque encobre o fato de que todas essas abordagens deixarão claro que você não entende muito bem de Python.

Isso é parte do motivo pelo qual estamos vendo muitos elogios ao ChatGPT vindos de programadores experientes. Se você passa o olho e reconhece rapidamente a melhor opção, e não se deixa enganar por nenhuma das outras sugestões, então é possível trabalhar mais rapidamente com o ChatGPT como um assistente.

Mas se você é novo em programação, avaliar todas essas outras opções não é trivial e nem um pouco óbvio.

Os programadores mais novos podem pensar que a solução enumerate() é a “mais legível e fácil de entender”, mas também podem ser confundidos pelo uso de uma função em um loop for. Talvez eles tenham passado algum tempo trabalhando com uma linguagem semelhante à C e as soluções baseadas em índice pareçam mais “legíveis” para eles.

Nesse caso, o ChatGPT é um assistente pouco confiável – não porque seja excessivamente confiante, mas por apresentar soluções boas e ruins como equivalentes.

Uma comparação potencialmente enganosa

Eu continuei no ChatGPT para perguntar qual seria a melhor abordagem. Assim, perguntei: “Qual das abordagens que você mostrou é a melhor?”.

A resposta usa a palavra “pythônica”, que vem do inglês “Pythonic” e se refere a um código idiomático em Python. Veja a seguir:

O melhor jeito depende de seu caso específico e preferência pessoal. Aqui está uma breve comparação das abordagens que lhe mostrei:

  1. Usar a função enumerate() é a maneira mais concisa e legível para obter o índice e o item correspondente em um loop for. Também é a forma mais pythônica de fazê-lo, porque é uma função especificamente criada para esse propósito.
  2. Usar a função range() e indexar a lista é uma abordagem simples, mas pode ser menos legível do que usar a função enumerate(), porque exige uma linha adicional para conseguir o item da lista.
  3. Usar a função zip() é parecido com usar a função range(), mas é levemente mais concisa e pode ser mais legível, porque emparelha o índice e o item correspondente em uma única linha.
  4. Usar a lista de compreensão é uma técnica mais avançada, e é menos legível do que as outras três abordagens. Ela não é recomendada para loops únicos.

 

No geral, eu recomendaria usar enumerate() como a primeira escolha, isso porque é o meio pythônico mais legível para conseguir o índice e o item correspondente em um loop. E se você tem um requerimento específico que não seja atendido pelo enumerate(), você pode escolher outro jeito que se encaixe em suas necessidades.

enumerate no python, como usar?
Aprender Python com ChatGPT com Eficiência (Guia Prático) 6

Essa comparação, para mim, é potencialmente bem enganosa. Ele afirma corretamente que enumerate() é a forma “mais concisa e legível” e até usa a palavra “pythônica”. Também chama a abordagem range() de “menos legível”, o que é uma avaliação apropriada.

No entanto, a IA sugere que a forma zip() é “um pouco mais concisa e pode ser mais legível” do que a solução anterior, não muito apropriada, que usa range(). Fazer esse comentário favorável sobre a solução zip() é um exagero.

O quarto ponto, que descreve a compreensão de lista como “uma técnica mais avançada”, é totalmente enganoso.

As pessoas mais novas em uma linguagem devem estar atentas às técnicas avançadas, para que possam conhecê-las e começar a usá-las assim que conseguirem. Mas a abordagem proposta pelo ChatGPT literalmente nunca seria apropriada.

Tome cuidado com o ChatGPT em programação

O ChatGPT se encaixa bem em alguns fluxos de trabalho, mas os iniciantes em programação – ou em uma nova linguagem – precisam ter cuidado ao interpretar a saída e as respostas desses assistentes.

Como eu disse antes, o ChatGPT e seus similares não vão desaparecer. Veremos mais dessas ferramentas e veremos uma variedade de opiniões dadas sobre elas. Acho que precisamos ter cuidado para ajudar as pessoas a saberem quando usar essas tecnologias, e quando evitarem se distrair ou serem enganadas por elas.

Os professores também devem estar cientes de que simplesmente dar aos alunos acesso a ferramentas de IA não permite que eles aprendam tudo o que desejam de forma totalmente independente.

Sou totalmente a favor de ferramentas e recursos que apoiem o aprendizado independente. No entanto, é necessário ter uma base prévia de conhecimento relevante para entender a saída gerada pelo ChatGPT e similares.

Uma última observação, para irmos além do uso do ChatGPT especificamente para aprendizado. Há ferramentas e empresas sendo criadas com forte dependência ao ChatGPT. Parte delas será bastante útil a longo prazo; mas algumas devem fracassar por não serem críticas o suficiente ao trabalhar com as respostas de uma IA.

Se você estiver trabalhando com o ChatGPT em algo que vá além de exploração, avalie criticamente as sugestões que ele está fazendo.

LEIA TAMBÉM


✦ Recomendação do Editor

Eleve o seu nível no assunto

Se você está procurando aprender mais sobre Programação em Python após ler nosso artigo sobre como usar o ChatGPT para aprender Python, eu recomendo procurar por Livros de Python para iniciantes na Amazon. Estes livros são uma ótima maneira de adquirir conhecimentos profundos e práticos sobre o Python, além de oferecer uma visão mais ampla sobre a linguagem.

Ao adquirir um livro de Python para iniciantes, você vai ganhar conhecimentos práticos e fundamentais sobre a linguagem, além de aprender técnicas e recursos avançados. Isso vai lhe dar uma visão mais profunda e completa sobre a programação e o Python, o que é fundamental para qualquer carreira em tecnologia. Além disso, os livros são uma ótima maneira de aprender de forma organizada e estruturada, o que é muito útil para qualquer pessoa que está começando a aprender programação.



Ver ofertas em destaque na Amazon


Ajude a manter este projeto, a Ramos da Informática pode ganhar uma comissão sobre as vendas qualificadas.
🚀 Apoio Independente de um sonho

Ajude a manter o código livre e o sonho vivo de viver de produzir conteúdos para você!

Escrever tutoriais profundos e sem paywalls exige tempo e dedicação. Meu grande sonho é me dedicar 100% a produzir conteúdos, criar ferramentas open-source, abrir uma comunidade ativa e, em breve, lançar um canal no YouTube.

Se este artigo te poupou horas de trabalho, considere enviar um "Pix Livre" de qualquer valor para apoiar esta jornada. Cada incentivo me aproxima de viver exclusivamente para a nossa comunidade dev! 💚

QR Code Pix Livre - Ramos da Informática
Escaneie com o app do seu banco ☕
Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade dedicado a linguagens de programação, banco de dados, DevOps, Internet das Coisas (IoT), tecnologias da Indústria 4.0, cibersegurança e startups. Com curadoria de conteúdos de qualidade, o projeto é mantido por Ramos de Souza Janones.

Mais recentes

CodeQL 2.26.3: melhorias em segurança e modelagem

Relatório de impacto CodeQL 2.26.3: Evolução da modelagem de dados, segurança GitHub Actions e otimização de precisão para arquitetos...

PostgreSQL: Como Dar Acesso Seguro para DBA Terceirizado

Aprenda a conceder acesso seguro e temporário para DBA terceirizado no PostgreSQL. Guia completo com pgaudit, privilégios granulares, expiração...

Um guia completo para Testcontainers no Node.js

O Testcontainers é uma biblioteca que fornece instâncias leves e descartáveis de bancos de dados, message brokers, navegadores ou...

Do Prompt ao Protótipo: Modelagem 3D com Text-to-CAD e Agentes de IA

Descubra como a modelagem 3D com Text-to-CAD e agentes de IA está transformando o design mecânico. Tutorial completo de instalação, skills...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.
Masterclass Online

Automação de Busca de Vagas Tech com n8n e IA

Construa o seu próprio recrutador autônomo. Aprenda a varrer a internet, ler requisitos com LLMs e receber as vagas com match perfeito no seu Telegram ou Slack.

  • Workflows visuais com n8n
  • Filtros inteligentes de stack com IA
  • Alertas de vagas em tempo real na nuvem

Com o Especialista

Ramos de Souza Janones

Engenheiro Full Stack Sênior

Garantir Minha Vaga ➔ Inscrições via Sympla

ShadScan: Gere Código shadcn/ui a Partir de Prints

Descubra como o ShadScan usa IA para transformar prints de componentes UI em código shadcn/ui e Tailwind CSS pronto...

Package.json Linter: Como Validar com ESLint Plugin

Aprenda a usar o eslint-plugin-package-json para validar e padronizar seu package.json automaticamente. Evite erros de publicação NPM, inconsistências em...

Mais Lidos

Rastrear Baleias Cripto: Blueprint Para Investidores Sêniores

É possível antecipar os movimentos do mercado rastreando a...

Cursos Online Eficaz: 5 Dicas para Aprovesar

Estamos cada vez mais conectados com cursos online e...

Blackbox AI: Transforme Perguntas em Código

Programadores, conheça Blackbox.io! Esta ferramenta revolucionária irá maximizar sua...

MIT App Inventor: Tutorial para Criar o seu App

Aprenda a criar o seu primeiro aplicativo para celular com o MIT App Inventor. Um guia prático com tutorial passo a passo sobre blocos, lógica e Inteligência Artificial.
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.
✨ Utilitários Dev

Ferramentas Práticas

Sem enrolação para adiantar o seu dia a dia.

Carreira Internacional

JOB NA GRINGA

Meta de Salário Remoto
U$ 5.000/mês

O mapa completo para programadores do Brasil conquistarem contratos internacionais e mudarem de vida financeira.

  • Vagas exclusivas semanais: Membros acessam vagas com 7 dias de antecedência.
  • Workshops e lives gravadas: Buscar vagas não é óbvio. Nós te mostraremos como.
  • 498 Portais de vagas: Que contratam Brasileiros direto na sua dashboard.
  • Mentorias com Recrutadores: Encontros semanais ao vivo com Erika Linares.
  • Inglês diário com foco em conversação: Treine para entrevistas num ambiente sem julgamentos.
  • Suporte pós-contratação: Contabilidade e recebimento legal com a menor taxa.
Garantir Minha Vaga

Inscrição segura via Hotmart

🚀 Apoio Independente

Ajude a manter o código livre e o sonho vivo!

Escrever tutoriais profundos exige tempo. Meu sonho é viver 100% produzindo conteúdo de qualidade para você!

Escaneie com o app do banco para enviar um "Pix Livre"

Se este conteúdo te ajudou, fortaleça essa jornada. Cada incentivo conta! 💚

Você vai gostarrelacionados
Continue aprendendo

E-Zine Dev Ramos

Quer dominar arquitetura e IA?

Junte-se a +10.000 profissionais. Receba semanalmente estratégias de Node.js, React e IA que nunca publicamos no blog.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

O Sonho é Possível com seu Apoio!

Meu grande sonho é dedicar 100% do meu tempo a criar ferramentas open-source e tutoriais profundos para você. Se este conteúdo te ajudou, fortaleça essa jornada enviando um Pix Livre de qualquer valor. 💚

QR Code Pix Livre

Escaneie com o app do banco ☕