Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Desafio: hora da prática

Média de gastos

gastos = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]
media = sum(gastos) / len(gastos)
print(f"Média de gastos: R$ {media:.2f}")

Compras acima de R$ 3000

gastos = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]
acima = sum(1 for g in gastos if g > 3000)
print(f"Compras acima de R$3000: {acima}")
print(f"Porcentagem: {acima / len(gastos) * 100:.1f}%")

Coletar 5 inteiros e imprimir lista

numeros = []
for i in range(5):
    n = int(input(f"Digite o número {i+1}: "))
    numeros.append(n)
print(numeros)

Lista em ordem inversa

numeros = []
for i in range(5):
    n = int(input(f"Digite o número {i+1}: "))
    numeros.append(n)
print(numeros[::-1])

Números primos até N

limite = int(input("Digite um número: "))
primos = []
for n in range(2, limite + 1):
    primo = True
    for i in range(2, n):
        if n % i == 0:
            primo = False
            break
    if primo:
        primos.append(n)
print(primos)

Validar data

dia = int(input("Dia: "))
mes = int(input("Mês: "))
ano = int(input("Ano: "))
dias_por_mes = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# Ano bissexto
if (ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0):
    dias_por_mes[1] = 29
if 1 <= mes <= 12 and 1 <= dia <= dias_por_mes[mes - 1] and ano > 0:
    print("Data válida!")
else:
    print("Data inválida!")

Percentual de crescimento de bactérias

bacterias = [1.2, 2.1, 3.3, 5.0, 7.8, 11.3, 16.6, 25.1, 37.8, 56.9]
crescimento = []
for i in range(1, len(bacterias)):
    perc = 100 * (bacterias[i] - bacterias[i-1]) / bacterias[i-1]
    crescimento.append(round(perc, 2))
print(crescimento)

Produtos doces e amargos

doces = 0
amargos = 0
for i in range(10):
    id_produto = int(input(f"ID do produto {i+1}: "))
    if id_produto % 2 == 0:
        doces += 1
    else:
        amargos += 1
print(f"Doces (ID par): {doces}")
print(f"Amargos (ID ímpar): {amargos}")

Correção de prova

gabarito = ['D','A','C','B','A','D','C','C','A','B']
acertos = 0
for i in range(10):
    resposta = input(f"Questão {i+1} (A/B/C/D): ").upper()
    if resposta == gabarito[i]:
        acertos += 1
print(f"Nota: {acertos}/10")

Temperaturas acima da média anual

meses = ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
         'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro']
temps = []
for mes in meses:
    t = float(input(f"Temperatura média de {mes}: "))
    temps.append(t)
media = sum(temps) / len(temps)
print(f"\nMédia anual: {media:.2f}°C")
print("Meses acima da média:")
for i in range(12):
    if temps[i] > media:
        print(f"  {meses[i]}: {temps[i]}°C")

Total de vendas e produto mais vendido

vendas = {'Produto A': 300, 'Produto B': 80, 'Produto C': 60,
          'Produto D': 200, 'Produto E': 250, 'Produto F': 30}
total = sum(vendas.values())
mais_vendido = max(vendas, key=vendas.get)
print(f"Total de vendas: {total}")
print(f"Produto mais vendido: {mais_vendido} ({vendas[mais_vendido]} unidades)")

Design vencedor

votos = {'Design 1': 1334, 'Design 2': 982, 'Design 3': 1751,
         'Design 4': 210, 'Design 5': 1811}
total = sum(votos.values())
vencedor = max(votos, key=votos.get)
perc = votos[vencedor] / total * 100
print(f"Vencedor: {vencedor} com {perc:.1f}% dos votos")

Abono dos colaboradores

salarios = [1172, 1644, 2617, 5130, 5532, 6341, 6650, 7238, 7685, 7782, 7903]
abonos = {}
for s in salarios:
    abono = s * 0.10
    abonos[s] = abono if abono >= 200 else 200
total_abono = sum(abonos.values())
minimos = sum(1 for a in abonos.values() if a == 200)
maior = max(abonos.values())
print(f"Total gasto com abono: R$ {total_abono:.2f}")
print(f"Colaboradores com abono mínimo: {minimos}")
print(f"Maior abono: R$ {maior:.2f}")

Diversidade biológica

floresta = {'Área Norte': [2819, 7236], 'Área Leste': [1440, 9492],
            'Área Sul': [5969, 7496], 'Área Oeste': [14446, 49688],
            'Área Centro': [22558, 45148]}
print("Média por área:")
maior_area = None
maior_media = 0
for area, especies in floresta.items():
    media = sum(especies) / len(especies)
    print(f"  {area}: {media:.1f}")
    if media > maior_media:
        maior_media = media
        maior_area = area
print(f"\nMaior diversidade: {maior_area}")
4 respostas

Análise de idades por setor

setores = {'Setor A': [22,26,30,30,35,38,40,56,57,65],
           'Setor B': [22,24,26,33,41,49,50,54,60,64],
           'Setor C': [23,26,26,29,34,35,36,41,52,56],
           'Setor D': [19,20,25,27,34,39,42,44,50,65]}
todas_idades = []
for setor, idades in setores.items():
    media = sum(idades) / len(idades)
    todas_idades.extend(idades)
    print(f"{setor} - Média: {media:.1f} anos")
media_geral = sum(todas_idades) / len(todas_idades)
acima = sum(1 for i in todas_idades if i > media_geral)
print(f"\nMédia geral: {media_geral:.1f} anos")
print(f"Pessoas acima da média geral: {acima}")

Bem confuso pra conseguir fazer e to usando o claude pra me ajudar a estruturar e entender

Olá! É perfeitamente normal sentir certa confusão no início. A transição para Estruturas de Dados (listas e dicionários) é o momento em que o Python deixa de ser uma "calculadora" e passa a ser uma ferramenta de análise real.

O fato de você estar usando o Claude para estruturar o pensamento é excelente! Na área de Data Science, saber usar ferramentas de IA para explicar a lógica de um código é uma habilidade de produtividade valiosa.

solução!

Oii, Estudante. Tudo bem?

Parabéns pela persistência! Entender estruturas de dados e lógica de programação em Python pode ser um desafio e tanto no começo, mas os seus códigos mostram que você está pegando o jeito de conceitos bem complexos.

O uso de dicionários e listas para organizar dados de setores ou de biodiversidade ficou excelente. É muito gratificante ver o código rodando e trazendo as médias direitinho, né?

Alguns pontos que achei muito interessantes na sua resolução:

  • Tratamento de anos bissextos: No exercício de validar a data, você montou uma lógica impecável para o mês de fevereiro. É um detalhe que muita gente deixa passar, mas que é fundamental para um sistema robusto.
  • Uso de slices: Em "Lista em ordem inversa", você usou o [::-1]. Essa é uma forma muito "pythônica" de resolver o problema.
  • Dicionários e agregações: Nos exercícios de vendas e abonos, você manipulou chaves e valores com muita clareza, especialmente ao usar o max(vendas, key=vendas.get) para encontrar o vencedor.

Como você mencionou que está usando o Claude para ajudar na estruturação, uma técnica legal para você testar é tentar explicar para a IA (ou até para você mesmo, em voz alta) o que cada linha do seu for está fazendo.

Por exemplo, no código do crescimento das bactérias:

for i in range(1, len(bacterias)):
    perc = 100 * (bacterias[i] - bacterias[i-1]) / bacterias[i-1]

Aqui você teve uma sacada ótima: começar o range no 1 para conseguir olhar para o elemento anterior (i-1) sem dar erro. Isso é lógica pura!

Não se preocupe com a confusão inicial. Aprender Python para Dados é como montar um quebra-cabeça: no começo as peças parecem não encaixar, mas logo o desenho geral aparece.

Continue postando suas dúvidas e evoluções por aqui. Estamos de olho para te apoiar.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigada pelas orientações, vai ajudar bastante no meu aprendizado