Edson Santos
Edson Santos05/03/2025 12:32
Compartilhe

#challenge: Desafio de Programação no GitHub - Programa Loja de Tintas

  • #Matemática financeira
  • #Python

Pessoal, costumo compartilhar regularmente desafios no meu LinkedIn e GitHub. Embora a maioria desses desafios não seja de minha autoria, eles são selecionados de sites e fóruns especializados. Fique à vontade para tentar o desafio abaixo! É sempre um prazer resolver esses problemas. PS: A solução será publicada em até 7 dias, aqui mesmo neste post. ;-)

Novo Desafio de Programação no GitHub:

Desafio #03: Crie um programa para uma loja de tintas. O programa deverá pedir o tamanho (em metros quadrados) da área a ser pintada. Considere que a tinta cobre 1 litro para cada 6 metros quadrados e é vendida em latas de 18 litros (custando R$ 80,00) ou em galões de 3,6 litros (custando R$ 25,00).

O programa deve calcular e exibir as quantidades de tinta necessárias e os respectivos custos em 3 situações:

. Comprar apenas latas de 18 litros.

. Comprar apenas galões de 3,6 litros.

. Misturar latas e galões de forma a minimizar o custo total.

Além disso, acrescente uma margem de 10% de segurança e sempre arredonde os valores para cima, considerando latas e galões cheios.

Este desafio é uma excelente oportunidade para praticar lógica e otimização de custos.

A solução será publicada no repositório dentro de 7 dias.

image

---

#challenge: https://github.com/ecopque/programming_challenges/tree/main/03_-_paint_store

#myrepository: https://github.com/ecopque

#mylinks: https://linktr.ee/edsoncopque

---

#programming #coding #challenges #tech #python #learning #developer #dev

Compartilhe
Comentários (2)
Edson Santos
Edson Santos - 13/03/2025 15:06

Olá, pessoal,

Como combinado, estou compartilhando o link com a resposta do desafio abaixo. Também vou colar o código aqui para facilitar o acesso. Espero que aproveitem e que tenha sido útil para o aprendizado de todos! 😉

Link resposta desafio: https://github.com/ecopque/programming_challenges/blob/main/03_-_paint_store/response.py

Código:

performance = 6 # each liters, 6 square meters

can_liters = 18 # liters / unit price: 4.44
can_price = 80 # unit price.

gallon_liters = 3.6 # liters / unit price: 6.94
gallons_price = 25 # unit price


while True:
  try:
      area_m2 = float(input('Enter the area in square meters to be painted: '))

      if area_m2 > 0:

          qt_liters = (area_m2 / performance)
          qt_liters_margin = (qt_liters * 1.1) # 10%

          total_cans = (qt_liters_margin // can_liters)
          if qt_liters_margin % can_liters != 0:
              total_cans += 1
          total_price_can = (total_cans * can_price)

          total_gallons = (qt_liters_margin // gallons_price)
          if qt_liters_margin % gallon_liters != 0:
              total_gallons +=1
          total_price_gallon = (total_gallons * gallons_price)

          # Since cans are cheaper than gallons, try to use as many cans as possible:
          cans_for_combination = (qt_liters_margin // can_liters)
          
          difference = (qt_liters_margin - (cans_for_combination * can_liters))
          gallons_for_combination = (difference // gallon_liters)
          if difference % gallon_liters != 0:
              gallons_for_combination += 1
          
          total_price_combination = ((cans_for_combination * can_price) + (gallons_for_combination * gallons_price))

          # Display the results
          print(f'1. Only 18-liter cans:')
          print(f'Number of cans: {total_cans} can(s)')
          print(f'Total price: R$ {total_price_can:.2f}')

          print(f'\n2. Only 3.6-liter gallons:')
          print(f'Number of gallons: {total_gallons} gallon(s)')
          print(f'Total price: R$ {total_price_gallon:.2f}')

          print(f'\n3. Mixing cans and gallons (for the lowest price):')
          print(f'Number of cans: {cans_for_combination} can(s)')
          print(f'Number of gallons: {gallons_for_combination} gallon(s)')
          print(f'Total price: R$ {total_price_combination:.2f}')

          break

      else:
          print('Please enter a value greater than 0.')

  except ValueError:
      print('Please enter a valid value.')

'''
. Developer: Edson Copque
. Website: https://linktr.ee/edsoncopque
. GitHub: https://github.com/ecopque
. Signal Messenger: ecop.01
'''


DIO Community
DIO Community - 06/03/2025 11:53

Ótima proposta de desafio, Edson! A lógica envolvida no cálculo de otimização de custos para a compra de tintas torna esse exercício uma excelente oportunidade para praticar matemática financeira e programação em Python.

O detalhamento das três abordagens diferentes (apenas latas, apenas galões e combinação para minimizar custos) adiciona camadas estratégicas ao desafio, incentivando os participantes a pensarem além da solução óbvia e aplicarem conceitos de otimização e arredondamento.

A margem de segurança de 10% é um ótimo toque realista, simulando a necessidade de prever desperdícios, algo muito comum na gestão de suprimentos e planejamento financeiro.

Quem busca aprimorar habilidades em estruturas de controle, cálculos matemáticos e estratégias de otimização encontrará nesse desafio uma excelente prática para projetos reais.

Já estou ansioso para conferir as soluções da comunidade no GitHub! Parabéns pelo compartilhamento e pela iniciativa!