Raphael, sinto não ter enviado isso antes, mas ontem foi um dia longo...
Enfim, vamos lá:
Sua questão foi relativa a esse trecho aqui -->
"misturar latas e galões, de forma que o desperdício de tinta seja menor. Acrescente 10% de folga e sempre arredonde os valores para cima, isto é, considere latas cheias."
Portanto, foi exatamente ali em que eu trabalhei.
Note, esse problema é aquele tipo bem disfarçado. Se tu tiver distraído, acaba errando. Trata-se de uma questão simples, mas com uma execução trançada, você precisa trabalhar as variáveis a teu favor. Calcular e recalcular de acordo com as restrições propostas naquele parágrafo que tu mencionou acima.
Então, bora bora, vamos ao código!
"""
Proposta --> Criar uma calculadora para verificar o total da MISTURA DE TINTAS necessária para cobrir a área total
fornecedida pelo cliente via input:
outputs gerados:
Quantidade total de latas e galoes misturados(done)
Preço total (done)
Quantidade de economia (done)
Restrições -- >
O programa deve considerar:
- latas/galoes inteiros ( fracionamentos serão invariavelmente arredondados para cima),
- a adicao de uma 'gordura' para fins de margem de erro no valor de 10% sobre a demanda total do produto,
"""
import math
#captacao de dados + definicao das variaveis + pre calculo
area_da_pintura = float(input("Informe o tamanho da área da pintura em m2: "))
margem_de_seguranca = 0.1
cobertura_cada_litro = 6
galao_litros = 3.6
lata_litros = 18
cobertura_galao_metros_quadrados = (galao_litros * cobertura_cada_litro) - (galao_litros * cobertura_cada_litro * margem_de_seguranca)
cobertura_lata_metros_quadrados = (lata_litros * cobertura_cada_litro) - (lata_litros * cobertura_cada_litro * margem_de_seguranca)
lata_preco = 80.00
galao_preco = 25.00
quantidade_tinta = area_da_pintura/cobertura_lata_metros_quadrados
#tratamento das variaveis
b = str(quantidade_tinta)
h = b.split(".")
inteiro = h[0]
inteiro = lata = int(inteiro)
galao = (area_da_pintura - (lata * cobertura_lata_metros_quadrados))/cobertura_galao_metros_quadrados
galao = math.ceil(galao)
#regras que regem o problema + geracao de outputs
if area_da_pintura < cobertura_lata_metros_quadrados:
print(f"Voce precisara de {galao} galão (ões) de tinta por {(galao * galao_preco):.2f} Reais")
if galao >= 4: #Até 3 galões faz sentido comprar os galoes (preco 75R$). Caso contrario, maior economia comprar a LATA.
print(f"LEMBRETE: É mais econômico adicionar ao carrinho 1 lata de tinta de 18 L pelo preço de {lata_preco:.2f} Reais em vez dos galões escolhidos")
print(f'Sua economia seria de {abs(lata_preco - (galao * galao_preco)):.2f} Reais')
elif area_da_pintura >= cobertura_lata_metros_quadrados:
if galao == 0:
print(f'Você precisará de {lata} lata(s) de tinta')
print(f'O preço total será: {(lata * lata_preco):.2f} Reais')
if galao > 0 and galao < 4:
print(f'Você precisará de {lata} lata(s) de tinta e {galao} galão (ões).')
print(f'O preço total será: {((lata * lata_preco) + (galao * galao_preco)):.2f} Reais')
if galao >= 4:
print(f'Você precisará de {lata} lata(s) de tinta e {galao} galão (ões).')
print(f'O preço total será: {((lata * lata_preco) + (galao * galao_preco)):.2f} Reais')
print(f"LEMBRETE: É mais econômico adicionar ao carrinho 1 lata de tinta de 18 L pelo preço de {lata_preco:.2f} Reais em vez dos galões escolhidos")
print(f'Sua economia seria de {abs(lata_preco - (galao * galao_preco)):.2f} Reais')
Ufa! Acabou hehe.
Bem, note que você poderá trabalhar essa questão de diversas formas diferentes! A matemática e a programação te oferecem esse recurso da "criatividade", você pode se mover para vários lados, contanto que no final chegue ao destino certo.
Eu fiz esse código de forma bastante extensa (deu pra notar, ne), mas vc pode confeccionar tua lógica de maneira mais simples e enxuta. Tente, brinque bastante com as linhas e conceitos. Modifique e teste (BASTANTE).
Novamente, eu me diverti fazendo esse exercicio, espero que minhas linhas te sirvam também. Se tiver qualquer dúvida do que foi escrito, pode entrar em contato e por favor, não esqueça de marcar o atendimento como solucionado, caso este realmente esteja.