1
resposta

Monitorando vendas no comércio

maca_vendida = int(input("Quantas maças foram vendida? "))
banana_vendida = int(input("Quantas bananas foram vendida? "))
if maca_vendida > banana_vendida:
    campeao = "Maças"
    quantidade = maca_vendida
    print("As maças tivem mais vendas.")
elif banana_vendida > maca_vendida: 
    campeao = "Banana"
    quantidade = banana_vendida
    print("As bananas tivem mais vendas")
else: 
    campeao = "Empate"
    quantidade = maca_vendida
    print("Houve a mesma quantidade de venda para ambos os produtos.")
print(f"Produto mais vendido: {campeao} | Quantidade: {quantidade}")

# USANDO FUNÇÃO E DICT
vendas = {"Maças": int(input("Maças: ")), "Bananas": int(input("Bananas: "))}
if len(set(vendas.values())) == 1:
    print("Houve empate!")
else:
    campeao = max(vendas, key=vendas.get)
    print(f"Produto mais vendido: {campeao} | Quantidade: {vendas[campeao]}")
1 resposta

Olá, Luísa. Como vai?

Excelente ver você praticando novamente e, mais uma vez, buscando duas abordagens diferentes para o mesmo problema! A sua primeira solução utilizando if, elif e else resolve muito bem o desafio e a lógica de comparação direta está corretíssima.

A sua segunda abordagem utilizando dicionários (dict) e funções nativas como max() ficou fantástica e demonstra uma evolução muito legal no uso de recursos avançados do Python. A estratégia de usar len(set(...)) == 1 para identificar o empate foi uma sacada genial, pois converte os valores para um conjunto (removendo duplicados) e verifica se sobrou apenas um elemento único.

Para deixar seus códigos ainda mais robustos e polidos, trago alguns pequenos pontos de melhoria técnica e de boas práticas:

1. Ajuste no cenário de empate (Segunda Abordagem)
No seu segundo código, caso ocorra um empate, o programa exibe a mensagem "Houve empate!", mas logo em seguida ele tenta executar a linha do else. No entanto, como as variáveis campeao e quantidade não foram criadas dentro do bloco do if (apenas no else), o programa poderia quebrar se você tentasse usar essas variáveis mais adiante.

Podemos ajustar isso definindo os valores de empate no dicionário para manter a consistência:

# USANDO FUNÇÃO E DICT (Ajustado)
vendas = {"Maçãs": int(input("Maçãs: ")), "Bananas": int(input("Bananas: "))}

if len(set(vendas.values())) == 1:
    campeao = "Empate"
    quantidade = list(vendas.values())[0] # Pega o valor de qualquer uma
    print("Houve a mesma quantidade de venda para ambos os produtos.")
else:
    campeao = max(vendas, key=vendas.get)
    quantidade = vendas[campeao]
    print(f"As {campeao.lower()} tiveram mais vendas.")

print(f"Produto mais vendido: {campeao} | Quantidade: {quantidade}")

2. Revisão das Strings (Ortografia)
Na primeira abordagem, há apenas alguns pequenos detalhes de digitação nas mensagens que aparecem na tela (como "maças" em vez de "maçãs", "vendida" no singular, e "tivem" em vez de "tiveram"). Corrigir esses pequenos textos deixa o seu programa com uma cara muito mais profissional:

  • Onde está: print("As maças tivem mais vendas.")
  • O correto seria: print("As maçãs tiveram mais vendas.")

Utilizar o dicionário e a função max(), como você fez, é uma excelente prática de mercado porque torna o código escalável. Se a loja passar a vender 10 frutas diferentes, a lógica do max(vendas, key=vendas.get) continuará funcionando perfeitamente sem que você precise criar dezenas de blocos elif.

Parabéns pelo excelente progresso e por pensar de forma tão analítica!

Espero que possa ter lhe ajudado!