Water and carboy exercise

Asked

Viewed 120 times

-4

"Suppose you have a certain amount of empty bottles with a capacity of 5, 1.5, 0.5 and 0.25 liters. Admit that you have an unlimited number of bottles of each type.

Given a certain amount of water you want to store in bottles, how do you solve the problem by minimizing the number of bottles to use? How could I use the computer to calculate the required number of each bottle type?"

def agua(l):
  totalgarrafas= 0
  garrafa = 5
  while True:
    if l>=garrafa:
        l-=garrafa
        totalgarrafa+=1
    else:
        if totalgarrafa>0:
            print(f'O numero de garrafas é {totalgarrafa} por {garrafa} garrafas')
        if garrafa==5:
            garrafa=1.5
        elif garrafa==1.5:
            garrafa=0.5
        elif garrafa==0.5:
            garrafa=0.25
        totalgarrafa=0
        if totalgarrafa==0:
            break
print('Volte Sempre')
  • Good afternoon Rodrigo! Welcome to Stackoverflow! It’s good practice that, in addition to posting the code, you specifically explain the problem you’re having.

  • I can not get the solution of the problem, the function I did does not give, I lack something.:(

  • 2

    Edit your question by specifying your problem, an error message would be a good start. taking advantage of the moment, it would be nice to take a look at this topic of how to create a minimum, complete and verifiable example in addition to the topic of how to ask a good question

1 answer

2


If I may, I’d like to point out two things:

1 - Your code didn’t seem to make much sense, so I rewrote from scratch.

2 - I admit that there is some verbiage in the code I wrote, but it was for didactic purposes.

Goes below:

'''
garrafas com capacidade de apenas 5, 1.5, 0.5, 0.25
entra x agua e se autodistribui em n garrafas, da maior para a menor

'''
#OBS: a divisão inteira do Python (x//y)retorna apenas a parte inteira do quociente, ignorando os decimais pós-vírgula.

#para melhor compreensão, vou explicar o que a linha faz acima da mesma, ok? =D

#declara a função numeroGarrafas que recebe um parâmetro litros_agua.
def numeroGarrafas(litros_agua):

    #copiamos o valor da variável/parâmetro litros_agua para total_agua. Dispensável, mas didático.
    total_agua = litros_agua 

    #divisão inteira por 5 (24.3//5=4)
    cinco_litros = litros_agua//5 

    #subtrai do valor total a quantidade que se conseguiu armazenar em garrafas de 5L
    #equivale a: litros_agua = litros_agua - cinco_litros*5 (litros_agua = 24.3-(4*5) = 24.3-20 = 4.3)
    litros_agua -=(cinco_litros*5) 

    #mesmo procedimento, mas com valores de 1.5
    #litro_e_meio = 4.3//1.5 = 2
    litro_e_meio = litros_agua//1.5

    #litros_agua = 4.3-2*1.5 = 4.3-3 = 1.3
    litros_agua -=(litro_e_meio*1.5)

    #agora com 0.5
    #meio_litro = 1.3//0.5 = 2
    meio_litro = litros_agua//0.5

    #litros_agua = 1.3 - 2*0.5 = 1.3-1 = 0.3
    litros_agua-=(meio_litro*0.5)

    #quarto_de_litro = 0.3//0.25 = 1
    quarto_de_litro = litros_agua//0.25

    #litros_agua = 0.3-1*0.25 = 0.3-0.25 = 0.05 [ou 50ml]
    litros_agua -=(quarto_de_litro*0.25)

    #para não desperdiçarmos o máximo de 0.24L, vamos incluir uma linha com condicionais abaixo:
    #se sobrar alguma agua, reservamos a menor garrafa disponível para contê-la.
    if(litros_agua>0):
        #equivale a quarto_de_litro = quarto_de_litro+1
        quarto_de_litro+=1

    #finalmente o print, que coloca as variaveis conforme a própria disposição da frase.
    print('total:',total_agua,' garrafas de 5L:',cinco_litros,' de 1.5L:',\
        litro_e_meio,' de 0.5L:',meio_litro,' e de 0.25L:',quarto_de_litro)
   #a string acima te dá os resultados, do maior para o menor, mais a quantidade total de litros(para efeito de referência)

numeroGarrafas(24.3) #a saida deve ser (total: 24.3  garrafas de 5L: 4.0  de 1.5L: 2.0  de 0.5L: 2.0  e de 0.25L: 1.0)
  • I am grateful for the answer. But I was left with some doubts, which I’m sorry to ask, but I’m still at the beginning. What is the reason for putting total_agua=litros_agua. How python can calculate the result if not used if or while?

  • I edited the solution to explain better, blz? @Rodrigoferreira

Browser other questions tagged

You are not signed in. Login or sign up in order to post.