1
resposta

[Dúvida] Questão 12

Olá pessoal!

Ao desenvolver o raciocínio para a questão 12, cheguei no código abaixo, porém está retornando duas saídas: o print correto do primeiro if e o else do segundo if, alguém consegue me ajudar a encontrar o erro? Quero que a saída seja somente a correta. E aproveitando, como eu consigo deixar a saída com no máximo 2 casas decimais?

litro = float(input("Digite a quantidade de litros vendido:  "))
tipo = str(input("Digite o tipo de combustível (E=Etanol e D=Diesel): ")).lower()

# <=15L
desconto_etanol = (1.70*litro*0.02)
desconto_diesel = (2.00*litro*0.03)

# >15L
desconto_etanol_2 = (1.70*litro*0.04)
desconto_diesel_2 = (2.00*litro*0.05)

# <=15L
preco_final_etanol = (1.70*litro)-desconto_etanol
preco_final_diesel = (2.00*litro)-desconto_diesel

# >15L
preco_final_etanol_2 = (1.70*litro)-desconto_etanol_2
preco_final_diesel_2 = (2.00*litro)-desconto_diesel_2


if litro<=15 and tipo == "e":
  print(f'Valor a ser pago pelo cliente com o desconto é: R$ {preco_final_etanol}')
else:
  print(f'Valor a ser pago pelo cliente com o desconto é: R$ {preco_final_etanol_2}')

if litro<=15 and tipo == "d":
  print(f'Valor a ser pago pelo cliente com o desconto é: R$ {preco_final_diesel}')
else:
  print(f'Valor a ser pago pelo cliente com o desconto é: R$ {preco_final_diesel_2}')

Saída: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

É aquele problema do else que a professora comentou na aula. Se não atender a uma das condições com 'and', vai cair no else.

No caso ele ta retornando o TRUE do primeiro if, porque é menor que 15 e é tipo E. Mas também ta retornando o FALSE do segundo if, porque é menor do que 15, mas não é tipo D.

Eu sei que não é a melhor escolha, mas eu acabei trabalhando com if e else dentro de outro if e else pra sanar esse problema, onde o primeiro if serve pra analisar a variável (E ou D) e o de dentro, analisa se comprou menos ou mais de 15 litros.

Sobre a saida, acho que se vc usar um arredondamento 'round' com duas casas decimais nos resultados, resolve.

A sintaxe é round(variável, n) onde n é o numero de casas decimais.