1
resposta

Resolução do desafio: hora da prática V - Estruturas de dados - Momento dos projetos exs.: 7 ao 12

https://cursos.alura.com.br/forum/curso-python-data-science-primeiros-passos/exercicio-desafio-hora-da-pratica/123737/novo

# 7
bacterias = [1.2, 2.1, 3.3, 5.0, 7.8, 11.3, 16.6, 25.1, 37.8, 56.9]
crescimento = []
i = 1
while i < len(bacterias):
    amostra_passada = bacterias[i - 1]
    amostra_atual = bacterias[i]
    percentCrescimento = 100 * (amostra_atual - amostra_passada) / amostra_passada
    crescimento.append(round(percentCrescimento, 2))                # arredondar p/ 2 casas decimais
    i += 1

print('Percentual de crescimento por dia.')
for dia in range(1, len(crescimento) + 1):              #1 -> começa no 2º dia
    print(f'{dia + 1}º dia: {crescimento[dia - 1]}%')

# Percentual de crescimento por dia.
# 2º dia: 75.0%
# 3º dia: 57.14%
# 4º dia: 51.52%
# 5º dia: 56.0%
# 6º dia: 44.87%
# 7º dia: 46.9%
# 8º dia: 51.2%
# 9º dia: 50.6%
# 10º dia: 50.53%
# 8
ID_par = []
Id_impar = []
i = 0

while i < 10:
    num = int(input(f'Informe o {i + 1}º ID: '))
    if num % 2 == 0:
        ID_par.append(num)
    else:
        Id_impar.append(num)
    i += 1

print(f'\n{len(ID_par)} produtos doces, IDs: {ID_par}')
print(f'{len(Id_impar)} produtos amargos, IDs: {Id_impar}')

# Informe o 1º ID: 101
# Informe o 2º ID: 25
# Informe o 3º ID: 68
# Informe o 4º ID: 99
# Informe o 5º ID: 2
# Informe o 6º ID: 34
# Informe o 7º ID: 57
# Informe o 8º ID: 38
# Informe o 9º ID: 11
# Informe o 10º ID: 1

# 4 produtos doces, IDs: [68, 2, 34, 38]
# 6 produtos amargos, IDs: [101, 25, 99, 57, 11, 1]
# 9
gabarito = ['D', 'A', 'C', 'B', 'A', 'D', 'C', 'C', 'A', 'B' ]
alternativas = ['A', 'B', 'C', 'D']
respostasCertas = []
i = 0

print('Informe suas respostas.')
while i < len(gabarito):
    resposta = input(f'{i + 1}ª questão: ').upper()

    if resposta not in alternativas:
        print('Resposta inválida!')
        continue

    if resposta == gabarito[i]:
        respostasCertas.append(resposta)
    i += 1

print(f'\nAluno acertou {len(respostasCertas)} resposta(s) = Nota: {len(respostasCertas)}')

# Informe suas respostas.
# 1ª questão: s
# Resposta inválida!
# 1ª questão: a
# 2ª questão: a
# 3ª questão: c
# 4ª questão: b
# 5ª questão: d
# 6ª questão: a
# 7ª questão: b
# 8ª questão: c
# 9ª questão: a
# 10ª questão: b

# Aluno acertou 6 resposta(s) = Nota: 6
# 10
meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']
temperaturas = []
i = 0

print('Informe os valores das temperaturas.')
while i < len(meses):
    valor = float(input(f'{i + 1}ª: '))
    temperaturas.append(valor)
    i += 1

# média anual
mediAnual = sum(temperaturas) / len(temperaturas)
print(f'\nMédia anual: {round(mediAnual, 2)}°C')

# temperaturas acima da média
print(f'\nMeses com a temperatura acima da média')
j = 0
while j < len(temperaturas):
    if temperaturas[j] > mediAnual:
        print(f'{meses[j]}: {temperaturas[j]}°C')
    j += 1

# Informe os valores das temperaturas.
# 1ª: 23
# 2ª: 29
# 3ª: 26
# 4ª: 24
# 5ª: 23
# 6ª: 13
# 7ª: 13
# 8ª: 13
# 9ª: 15
# 10ª: 19
# 11ª: 23
# 12ª: 29

# Média anual: 20.83°C

# Meses com a temperatura acima da média
# Janeiro: 23.0°C
# Fevereiro: 29.0°C
# Março: 26.0°C
# Abril: 24.0°C
# Maio: 23.0°C
# Novembro: 23.0°C
# Dezembro: 29.0°C
# 11
vendas = {
    'Produto A': 300, 'Produto B': 80, 'Produto C': 60, 'Produto D': 200, 'Produto E': 250, 'Produto F': 30
 }
totalVendas = sum(vendas.values())
print(f'Total de vendas: {totalVendas}')

maisVendido = max(vendas, key=vendas.get)
print(f'Produto mais vendido: {maisVendido}')

# Total de vendas: 920
# Produto mais vendido: Produto A
# 12
design = {
    'Design 1': 1334,
    'Design 2': 982,
    'Design 3': 1751,
    'Design 4': 210,
    'Design 5': 1811
}

# Procura vencedor
vencedor = max(design, key=design.get)

# Soma todos votos
totalVotos = sum(design.values())

# Pegar votos vencedor
votosVencedor = design[vencedor]

# Verifica percentual de votos
percentVencedor = (votosVencedor / totalVotos) * 100

print(f'Vencedor: {vencedor}')
print(f'Com {votosVencedor} votos de um total de {totalVotos} votos')
print(f'Porcentagem de votos: {round(percentVencedor, 2)}%')

# Vencedor: Design 5
# Com 1811 votos de um total de 6088 votos
# Porcentagem de votos: 29.75%
1 resposta

Oi! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu uso da estrutura while nas resoluções está muito bem aplicado. E é ótimo ver o uso do round() para controle das casas decimais. Também é interessante como você dividiu os IDs pares e ímpares de forma organizada. Parabéns!

Uma dica interessante para o futuro é usar o método enumerate() em laços for quando precisar de um índice junto com o valor. Veja este exemplo:


nomes = ["Ana", "Bruno", "Carlos"]

for i, nome in enumerate(nomes):
    print(f"{i + 1} - {nome}")

Esse código imprime cada nome com sua posição na lista (enumerate ajuda a evitar variáveis auxiliares como i = 0 e i += 1).

Qualquer dúvida que surgir, compartilhe no fórum.

Abraços e bons estudos!

Alura

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