Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Faça como eu fiz: API e Dados em Python

import os
from google import genai
from google.colab import userdata

os.environ["GEMINI_API_KEY"] = userdata.get('GEMINI_API_KEY')

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="O que é a inteligência artificial?",
)
print(response.text)
print("\n" + "="*50 + "\n")

contador = 1
while contador <= 5:
    print("*" * contador)
    contador += 1  # Incrementando a variável de controle
print("\n" + "="*50 + "\n")

chat = client.chats.create(model="gemini-2.5-flash")
prompt_usuario = input("Digite sua mensagem para o chat: ")
resposta_chat = chat.send_message(prompt_usuario)
print(f"\nResposta do Gemini: {resposta_chat.text}\n")

historico = chat.get_history()
for mensagem in historico:
    print(f"[{mensagem.role.upper()}]: {mensagem.parts[0].text}")
print("\n" + "="*50 + "\n")

nomes_alunos = ["Ana", "Bruno", "Carlos", "Diana"]
medias_alunos = [8.5, 9.2, 7.0, 9.8]

print(f"Primeiro aluno da lista: {nomes_alunos[0]}")
print(f"Dois primeiros alunos (slice): {nomes_alunos[:2]}")

medias_alunos[2] = 7.5  # atualizando a nota do Carlos de 7.0 para 7.5

print("\nAplicando bônus de +1.0 ponto nas médias (Limite máximo 10.0):")
for i in range(len(medias_alunos)):
    medias_alunos[i] += 1.0
    if medias_alunos[i] > 10.0:
        medias_alunos[i] = 10.0

boletim = {}
for i in range(len(nomes_alunos)):
    boletim[nomes_alunos[i]] = medias_alunos[i]

print("\nBoletim Final:")
for nome, media in boletim.items():
    print(f"Aluno(a): {nome} | Média Final: {media}")
1 resposta

Olá, Luísa. Como vai?

Parabéns pela excelente implementação! Seu código está muito bem estruturado e demonstra o domínio de duas vertentes fundamentais para quem trabalha com Inteligência Artificial para dados: o consumo de APIs modernas e a manipulação essencial de estruturas de dados em Python (como listas, dicionários e laços de repetição).

Você utilizou com precisão a biblioteca mais recente do ecossistema do Google (google-genai), aplicando ótimas práticas tanto no gerenciamento de segredos quanto na lógica de programação tradicional.

Pontos Fortes do seu Código

  • Segurança e Boas Práticas: O uso do userdata.get('GEMINI_API_KEY') para resgatar a chave de API de forma injetada é a conduta perfeita no ambiente do Google Colab. Isso evita a exposição acidental de credenciais sensíveis no código.
  • Uso da API Atualizada: Ao instanciar o cliente com genai.Client() e usar o modelo gemini-2.5-flash, você está trabalhando com o estado da arte em termos de desempenho e custo-benefício para interações de texto e chat estruturado.
  • Lógica de Dados Limpa: O bloco final que faz o mapeamento das listas em um dicionário boletim e aplica a regra de negócio do bônus limitado a 10.0 mostra uma excelente base de lógica de programação.

Uma Sugestão de Melhoria com Python Fluente (List Comprehension e Zip)

Embora o seu laço for i in range(len(nomes_alunos)): esteja correto e funcione perfeitamente, o Python possui formas nativas mais elegantes e legíveis de manipular e iterar sobre múltiplas sequências em paralelo.

Podemos otimizar o bloco de bônus e a construção do dicionário utilizando as funções zip e min. Veja essa alternativa mais concisa e idiomática:

# Aplicando o bônus de forma direta usando a função min() para limitar em 10.0
medias_alunos = [min(media + 1.0, 10.0) for media in medias_alunos]

# Criando o dicionário de forma direta combinando as duas listas com a função zip()
boletim = dict(zip(nomes_alunos, medias_alunos))

print("\nBoletim Final:")
for nome, media in boletim.items():
    print(f"Aluno(a): {nome} | Média Final: {media}")
  • Por que isso ajuda? O zip junta os elementos correspondentes de duas listas em pares (ex: "Ana" com 9.5), eliminando a necessidade de controlar índices numéricos manuais ([i]). Já a função min(valor, 10.0) substitui a estrutura do if/else, deixando o fluxo visualmente mais limpo.

Continue explorando o potencial da automação e análise de dados combinada com IA!

Espero que possa ter lhe ajudado!