Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] 05_Estrutura de dados - Desafio Hora da Prática - Atividade 9/10/11

## 9) Desenvolva um programa que informa a nota de um(a) aluno(a) de acordo com suas respostas. Ele deve pedir a resposta desse(a) aluno(a) para cada questão e é preciso verificar se a resposta foi igual ao gabarito. Cada questão vale um ponto e existem as alternativas A, B, C ou D.
# Dicionário com o gabarito oficial das questões, onde a chave é o número da questão
# e o valor é a alternativa correta (A, B, C ou D).
gabarito = {
    1 : 'D',
    2 : 'A',
    3 : 'C',
    4 : 'B',
    5 : 'A',
    6 : 'D',
    7 : 'C',
    8 : 'C',
    9 : 'A',
    10 : 'B'
}

# Inicializa a variável nota, que vai contar quantas questões foram acertadas.
nota = 0

# Variável que vai contar quantas questões foram erradas.
respostaserradas = 0

# Lista para armazenar os números das questões que o usuário acertou.
questoescertas = []

# Lista para armazenar os números das questões que o usuário errou.
questoeserradas = []

# Laço que percorre todas as 10 questões (de 1 a 10)
for i in range(1, 11):
    # Solicita ao usuário a resposta da questão atual (i), já convertendo para maiúscula.
    resposta = input(f'Qual a resposta da questão {i} ? ').upper()

    # Enquanto a resposta digitada não for uma das opções válidas, solicita novamente.
    while resposta not in ['A', 'B', 'C', 'D']:
        print('Resposta inválida! Tente novamente.')
        resposta = input(f'Qual a resposta da questão {i} ? ').upper()
    
    # Verifica se a resposta está correta, comparando com o gabarito.
    if resposta == gabarito[i]:
        nota += 1  # Incrementa a pontuação
        questoescertas.append(i)  # Armazena a questão como certa
    else:
        respostaserradas += 1  # Incrementa o número de erros
        questoeserradas.append(i)  # Armazena a questão como errada

# Exibe o resultado final
print(f'Você acertou {nota} questões e errou {respostaserradas} questões.')
print(f'Você acertou as questões: {questoescertas}')
print(f'Você errou as questões: {questoeserradas}')
print(f'Você obteve {nota} pontos.')
## 10) Um instituto de meteorologia deseja fazer um estudo de temperatura média de cada mês do ano. Para isso, você precisa fazer um código que colete e armazene essas temperaturas médias em uma lista. Depois, calcule a média anual das temperaturas e mostre todas as temperaturas acima da média anual e em que mês elas ocorreram, mostrando os meses por extenso (Janeiro, Fevereiro, etc.).
ano = 2025
meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 
         'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']
tempmes = []
mediaanual = 0

# Coleta de dados com validação
for i in range(12):
    while True:
        try:
            temp = int(input(f'Informe a temperatura média de {meses[i]}/{ano}: '))
            if temp < -50 or temp > 50:
                print('Valor inválido. Temperatura deve estar entre -50 e 50°C.')
                continue
            tempmes.append(temp)
            break
        except ValueError:
            print('Valor inválido. Digite um número inteiro.')

# Cálculo da média anual
mediaanual = sum(tempmes) / 12

# Exibe todas as temperaturas
print("\nTemperaturas registradas:")
for i in range(12):
    print(f'{meses[i]}/{ano}: {tempmes[i]}°C')

# Exibe a média anual
print(f'\nMédia anual de temperaturas em {ano}: {mediaanual:.2f}°C')

# Exibe os meses com temperatura acima da média
print("\nMeses com temperatura acima da média:")
for i in range(12):
    if tempmes[i] > mediaanual:
        print(f'{meses[i]}: {tempmes[i]}°C')
## 11) Uma empresa de e-commerce está interessada em analisar as vendas dos seus produtos. Os dados das vendas foram armazenados em um dicionário: {'Produto A': 300, 'Produto B': 80, 'Produto C': 60, 'Produto D': 200, 'Produto E': 250, 'Produto F': 30} Escreva um código que calcule o total de vendas e o produto mais vendido.
# Dados de vendas
bancodados = {
    'Produto A': 300,
    'Produto B': 80,
    'Produto C': 60,
    'Produto D': 200,
    'Produto E': 250,
    'Produto F': 30
}

# Total de vendas
totalvendas = sum(bancodados.values())
print(f'Total de vendas: {totalvendas:,} unidades\n')

# Ordenar e exibir vendas em ordem decrescente
print('Lista de vendas por proporção maior:')
vendas_ordenadas = sorted(bancodados.items(), key=lambda x: x[1], reverse=True)
for produto, valor in vendas_ordenadas:
    print(f'{produto:<10} → {valor:>5} unidades')
1 resposta
solução!

Oi, Marinaldo! Como vai?

Agradeço por compartilhar esse conjunto final de atividades com a comunidade Alura.

Você trouxe um código bem organizado, com validações importantes (como no exercício 10) e boas práticas como a separação de dados e lógica. O exercício 9 ficou ótimo para simular um pequeno sistema de correção de provas!

Se quiser aprimorar ainda mais o exercício 11, uma dica é destacar visualmente o produto mais vendido. Olha só esse exemplo com asteriscos para facilitar a visualização:



bancodados = {
    'Produto A': 300,
    'Produto B': 80,
    'Produto C': 60,
    'Produto D': 200,
    'Produto E': 250,
    'Produto F': 30
}

mais_vendido = max(bancodados, key=bancodados.get)
print(f'Produto mais vendido: {mais_vendido} ({bancodados[mais_vendido]} unidades)')

for produto, qtd in bancodados.items():
    destaque = '*' if produto == mais_vendido else ' '
    print(f'{destaque} {produto:<10} → {qtd} unidades')

Esse tipo de apresentação pode ser útil em relatórios simples de vendas.

Você concluiu o desafio com muita dedicação e cuidado. Parabéns pela consistência!

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