1
resposta

Desafio: hora da prática pt 2

  1. 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.
    Resposta:

#Dicionário de vendas
vendas = {
'Produto A': 300,
'Produto B': 80,
'Produto C': 60,
'Produto D': 200,
'Produto E': 250,
'Produto F': 30
}
#Variáveis
total_vendas = sum(vendas.values())
produto_mais_vendido = max(vendas, key=vendas.get)
#percorrendo o dicionário
for produto, quantidade in vendas.items():
if quantidade == max(vendas.values()):
produto_mais_vendido = produto
#Saída
print(f'Total de vendas: R${total_vendas}')
print(f'Produto mais vendido: {produto_mais_vendido}')
6. Uma pesquisa de mercado foi feita para decidir qual design de marca infantil mais agrada as crianças. A pesquisa foi feita e o votos computados podem ser observados abaixo:
''' Tabela de votos da marca
Design 1 - 1334 votos
Design 2 - 982 votos
Design 3 - 1751 votos
Design 4 - 210 votos
Design 5 - 1811 votos
'''
Adapte os dados fornecidos para uma estrutura de dicionário. A partir dele, informe o design vencedor e a porcentagem de votos recebidos.
RESPOSTA:
#Dicionário de votos
votos = {
'Design 1': 1334,
'Design 2': 982,
'Design 3': 1751,
'Design 4': 210,
'Design 5': 1811
}
for design, quantidade in votos.items():
if quantidade == max(votos.values()):
design_vencedor = design
porcentagem = (quantidade / sum(votos.values())) * 100
print(f'Design vencedor: {design_vencedor}')
print(f' A porcentagem de votos é de: {porcentagem:.2f}%')

1 resposta

Olá, Weydison. Como vai?

Parabéns por continuar avançando nos desafios e publicando a parte 2 das suas resoluções! O seu código para o exercício da pesquisa de mercado ficou excelente e a lógica matemática para extrair a porcentagem de votos foi aplicada com muita precisão.

Assim como no primeiro exercício, você utilizou muito bem as funções nativas do Python (max e sum) para trabalhar com os valores do dicionário.

Para colaborar com o seu aprendizado, quero trazer uma dica de otimização para o exercício 6 semelhante à que vimos no desafio anterior. No seu código atual, você utilizou um laço for para descobrir o design vencedor:

for design, quantidade in votos.items():
    if quantidade == max(votos.values()):
        design_vencedor = design

Essa abordagem funciona perfeitamente, mas faz o Python percorrer item por item desnecessariamente. Como você já aprendeu a usar o argumento key na primeira parte do desafio, você pode aplicar a mesma técnica avançada aqui para capturar o vencedor de forma direta, eliminando a necessidade do laço for.

Veja como o seu código ganha mais performance e fica mais limpo:

# Dicionário de votos
votos = {
    'Design 1': 1334,
    'Design 2': 982,
    'Design 3': 1751,
    'Design 4': 210,
    'Design 5': 1811
}

# Total de votos computados
total_votos = sum(votos.values())

# Captura o design vencedor diretamente pela chave de maior valor
design_vencedor = max(votos, key=votos.get)

# Busca a quantidade de votos do vencedor diretamente no dicionário
votos_vencedor = votos[design_vencedor]

# Calcula a porcentagem
porcentagem = (votos_vencedor / total_votos) * 100

# Saída de dados organizada
print(f'Design vencedor: {design_vencedor}')
print(f'A porcentagem de votos é de: {porcentagem:.2f}%')

Notou como a lógica fica mais direta? Usar o votos[design_vencedor] para pegar a quantidade evita que o Python precise recalcular o max(votos.values()) a cada iteração de um laço.

Você está demonstrando uma evolução fantástica na manipulação de dicionários em Python. Continue compartilhando seus códigos no fórum!

Espero que possa ter lhe ajudado!