1
resposta

[Projeto] Desafio

1

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("Média dos gastos:", media)

2

acima_3000 = 0

for valor in gastos:
if valor > 3000:
acima_3000 += 1

porcentagem = (acima_3000 / len(gastos)) * 100

print("Compras acima de 3000:", acima_3000)
print("Porcentagem:", porcentagem, "%")

3

lista = []

for i in range(5):
numero = int(input("Digite um número: "))
lista.append(numero)

print(lista)

4

lista = []

for i in range(5):
numero = int(input("Digite um número: "))
lista.append(numero)

lista.reverse()

print(lista)

5

numero = int(input("Digite um número: "))
primos = []

for n in range(2, numero + 1):
primo = True

for i in range(2, n):
    if n % i == 0:
        primo = False
        break
if primo:
    primos.append(n)

print(primos)

6

dia = int(input("Dia: "))
mes = int(input("Mês: "))
ano = int(input("Ano: "))
valida = True

if mes < 1 or mes > 12:
valida = False

elif dia < 1 or dia > 31:
valida = False

elif mes in [4, 6, 9, 11] and dia > 30:
valida = False

elif mes == 2 and dia > 28:
valida = False

if valida:
print("Data válida")
else:
print("Data inválida")

7

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)):
percentual = 100 * (bacterias[i] - bacterias[i - 1]) / bacterias[i - 1]
crescimento.append(percentual)

print(crescimento)

8

ids = []
doces = 0
amargos = 0

for i in range(10):
numero = int(input("Digite o ID: "))
ids.append(numero)

if numero % 2 == 0:
    doces += 1
else:
    amargos += 1

print("Doces:", doces)
print("Amargos:", amargos)

9

gabarito = ["D", "A", "C", "B", "A",
"D", "C", "C", "A", "B"]

nota = 0

for i in range(10):
resposta = input(f"Questão {i+1}: ").upper()

if resposta == gabarito[i]:
    nota += 1

print("Nota final:", nota)

10

meses = ["Janeiro", "Fevereiro", "Março", "Abril",
"Maio", "Junho", "Julho", "Agosto",
"Setembro", "Outubro", "Novembro", "Dezembro"]

temperaturas = []

for mes in meses:
temp = float(input(f"Temperatura média de {mes}: "))
temperaturas.append(temp)

media = sum(temperaturas) / len(temperaturas)

print("Média anual:", media)

for i in range(len(temperaturas)):
if temperaturas[i] > media:
print(meses[i], "-", temperaturas[i])

11

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("Total de vendas:", total)
print("Produto mais vendido:", mais_vendido)

12

votos = {
'Design 1': 1334,
'Design 2': 982,
'Design 3': 1751,
'Design 4': 210,
'Design 5': 1811
}

vencedor = max(votos, key=votos.get)

total_votos = sum(votos.values())

porcentagem = (votos[vencedor] / total_votos) * 100
print("Vencedor:", vencedor)
print("Porcentagem:", porcentagem, "%")

13

salarios = [1172, 1644, 2617, 5130, 5532,
6341, 6650, 7238, 7685, 7782, 7903]
abonos = {}
total_gasto = 0
abono_minimo = 0
maior_abono = 0
for salario in salarios:
abono = salario * 0.10

if abono < 200:
    abono = 200
    abono_minimo += 1
abonos[salario] = abono
total_gasto += abono
if abono > maior_abono:
    maior_abono = abono

print(abonos)
print("Total gasto:", total_gasto)
print("Quantidade com abono mínimo:", abono_minimo)
print("Maior abono:", maior_abono)

14

areas = {
'Área Norte': [2819, 7236],
'Área Leste': [1440, 9492],
'Área Sul': [5969, 7496],
'Área Oeste': [14446, 49688],
'Área Centro': [22558, 45148]
}

maior_diversidade = 0
nome_area = ""

for area, especies in areas.items():
media = sum(especies) / len(especies)
print(area, "- Média:", media)
total = sum(especies)
if total > maior_diversidade:
maior_diversidade = total
nome_area = area

print("Área com maior diversidade:", nome_area)

15

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)
print(setor, "- Média:", media)
todas_idades.extend(idades)
media_geral = sum(todas_idades) / len(todas_idades)
acima_media = 0
for idade in todas_idades:
if idade > media_geral:
acima_media += 1
print("Média geral:", media_geral)
print("Pessoas acima da média:", acima_media)

1 resposta

Olá, Micael! Como vai?

Uau, que entrega robusta! Você simplesmente varreu os conceitos mais importantes de Estruturas de Dados em Python. Resolver esses 15 exercícios demonstra que você já consegue transitar entre listas, dicionários e lógica de repetição com muita naturalidade.

Gostaria de destacar alguns pontos técnicos excelentes na sua resolução:

Pontos de Destaque Técnico

  • Manipulação de Dicionários (Ex 11 e 12): Você utilizou o parâmetro key=vendas.get dentro da função max(). Isso é sensacional! É a forma mais performática e elegante de encontrar a chave que possui o maior valor em um dicionário.
  • Lógica de Diferença Percentual (Ex 7): O cálculo da variação entre o elemento atual e o anterior (bacterias[i] - bacterias[i-1]) é a base para análises de séries temporais em Data Science. Mandou muito bem!
  • Uso de extend() (Ex 15): Diferente do append(), o extend() funde as listas, o que foi perfeito para criar a lista todas_idades e calcular a média geral do censo.
  • Tratamento de Gabarito (Ex 9): A combinação de um loop com upper() garante que seu sistema seja resiliente a erros de digitação do usuário.

Dicas para Refinar sua Prática

Como você já está operando em um nível avançado desses desafios, deixo três toques para o seu código ficar ainda mais profissional:

  1. Refinando a Data (Ex 6): Sua validação está ótima, mas o ano bissexto é sempre o "vilão" das datas. Fevereiro pode ter 29 dias se ano % 4 == 0. Adicionar essa pequena regra deixaria seu validador 100% preciso.
  2. Otimizando o Filtro (Ex 10): Para imprimir os meses acima da média, você usou range(len(temperaturas)). Uma alternativa bem estilosa no Python é o enumerate():
for i, temp in enumerate(temperaturas):
    if temp > media:
        print(f"{meses[i]} - {temp}")
  1. Dicionários e Médias (Ex 14): No cálculo das áreas, você repetiu o sum(especies). Você poderia guardar esse valor em uma variável logo no início do loop para ganhar um pouquinho de performance e deixar o código mais limpo.

O Próximo Passo: List Comprehension

Micael, muitos dos seus loops for que filtram ou transformam dados (como nos exercícios 1, 2 e 7) podem ser escritos em apenas uma linha usando List Comprehension. É o próximo grande salto na sua jornada Python!

Parabéns pelo fôlego e pela qualidade lógica dos scripts. Você está construindo uma base de engenharia de dados muito sólida.

Espero que possa ter lhe ajudado! Qual desses desafios você achou que teve a lógica mais "quebra-cabeça" para montar o dicionário final?