*Python- why is my code giving me information I didn’t ask for?

Asked

Viewed 77 times

0

should only show me the value of the fuel I requested, but it shows me the value of both gasoline and alcohol, no matter if I type D or A:

tipo_comb = input('Digite [G} para gasolina \nE [A] para alcool: ')
quantidade = float(input('Quantidade desejada: '))
cadastro = input('Digite [C] se possuir cadastro \nDigite [D] se não possuir cadastro: ')
gasolina = float(4.34*quantidade)
alcool = float(3.79*quantidade)
#não clientes e gasolina
if cadastro == 'D' or cadastro == 'd' and quantidade <= 20:
    print('você comprou {} litros, sem desconto seriam: {:.3f} reais \nO valor total com desconto é de {:.3f} reais'.format(
        quantidade,gasolina, (gasolina - gasolina*0.03)))
elif cadastro == 'D' or 'd' and quantidade >20 and tipo_comb == 'G' or 'g':
    print('você comprou {} litros, sem desconto seriam: {:.3f} reais \nO valor total com desconto é de {:.3f} reais'.format(
        quantidade, gasolina, (gasolina - gasolina * 0.05)))

#não clientes e alcool
if cadastro == 'C' or 'c' and quantidade <= 20:
    print('você comprou {} litros, sem desconto seriam: {:.3f} reais \nO valor total com desconto é de {:.3f} reais'.format(
            quantidade, alcool, (alcool - alcool* 0.03)))
elif cadastro == 'C' or 'c' and quantidade >20:
    print('você comprou {} litros, sem desconto seriam: {:.3f} reais \nO valor total com desconto é de {:.3f} reais'.format(
            quantidade, alcool, (alcool - alcool * 0.05)))
  • 2

    Only your first if is correct. The other 3 do something like 'D' or 'd' and that doesn’t make sense. You need to compare with each value separately or do cadastro in ['D', 'd']

  • Because I hadn’t noticed, now it worked, thank you very much.

3 answers

0

You can also convert the user input to a font and check only one

cadastro = str(input('Digite [C] se possuir cadastro \nDigite [D] se não possuir 
cadastro: ')).upper()

There in the checks you see only with uppercase letter.

if cadastro == 'D' and quantidade <= 20:
elif cadastro == 'D'and quantidade >20 and tipo_comb == 'G':#Considerando que fez a 
mesma coisa na entrado de tipo_comb.

This makes it easier because Oce does not need to create lists to check user entries, converting to a default no matter if it type uppercase or minuscule will always be compared to uppercase.

0

Under the if conditions you specified that the code would be executed if the user was or was not a customer, but did not specify that the 1st if would only be executed for casoline and the 2nd for alcohol. The corrected code would look like this :

tipo_comb = input('Digite [G} para gasolina \nE [A] para alcool: ')
quantidade = float(input('Quantidade desejada: '))
cadastro = input('Digite [C] se possuir cadastro \nDigite [D] se não possuir cadastro: ')
gasolina = float(4.34*quantidade)
alcool = float(3.79*quantidade)
#não clientes e gasolina
if cadastro == 'D' or cadastro == 'd' and quantidade <= 20 and tipo_comb == "G" or tipo_comb == "g" :
    print('você comprou {} litros, sem desconto seriam: {:.3f} reais \nO valor total com desconto é de {:.3f} reais'.format(
        quantidade,gasolina, (gasolina - gasolina*0.03)));
elif cadastro == 'G' or 'g' and quantidade >20 and tipo_comb == 'G' or 'g':
    print('você comprou {} litros, sem desconto seriam: {:.3f} reais \nO valor total com desconto é de {:.3f} reais'.format(
        quantidade, gasolina, (gasolina - gasolina * 0.05)));

#não clientes e alcool
if cadastro == 'C' or 'c' and quantidade <= 20 and tipo_comb == "A" or tipo_comb == "a":
    print('você comprou {} litros, sem desconto seriam: {:.3f} reais \nO valor total com desconto é de {:.3f} reais'.format(
            quantidade, alcool, (alcool - alcool* 0.03)));
elif cadastro == 'C' or 'c' and quantidade >20:
    print('você complor total com desconto é de {:.3rou {} litros, sem desconto seriam: {:.3f} reais \nO vaf} reais'.format(
            quantidade, alcool, (alcool - alcool * 0.05)));

0


On parole after the line #não clientes e alcool the condition that (tipo_comb == 'A' or tipo_comb == 'a')

Browser other questions tagged

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