Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Bug] Meu código está com resultado duplo

Tenho um exercício do curso para resolver, o exercício esta descrito abaixo.

O problema é que eles está retornando os print dos dois blocos condicionais, mas eu queria que me retornasse apenas o correto.

ltr = float(input('Quantos litros de combustivel deseja?: '))
combu = input('Qual tipo de combustivel? (E para etanol; D para Diesel): ') 

# ltr - Litros
# combu - Tipo de combustivel, Diesel ou Etanol
# pagar - Operação para adquirir o resultado do desconto

if combu.lower() == 'E' and ltr <= 15: # Se o usuario digitar 'E' entra nesse bloco condicional
  pagar = (ltr * 1.70) - (ltr * 1.70 / 50)
  print(f'O valor a pagar sera {pagar:.2f}')
else:
  pagar = (ltr * 1.70) - (ltr * 1.70 * 0.04)
  print(f'O valor a pagar sera {pagar:.2f}')

if combu.lower() == 'D' and ltr <= 15: # Se o usuario digitar 'D' entra nesse bloco condicional
  pagar = (ltr * 2.00) - (ltr * 2.00 * 0.03)
  print(f'O valor a pagar será {pagar:.2f}')
else:
  pagar = (ltr * 2.00) - (ltr * 2.00 * 0.05)
  print(f'O valor a pagar {pagar}')

Se eu uso elif os resultados da variável pagar saem incorretos.

Deveria retornar apenas este resultado. Podem me ajudar a concertar explicar o que está acontecendo?
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
3 respostas
solução!

Olá, Gabriel, tudo bem?

O problema está ocorrendo porque o código está executando ambos os blocos condicionais, já que eles são independentes. Para corrigir isso, você pode usar elif para garantir que apenas um bloco seja executado com base na condição inicial do tipo de combustível.

Uma sugestão de como ajustar o seu código:

ltr = float(input('Quantos litros de combustivel deseja?: '))
combu = input('Qual tipo de combustivel? (E para etanol; D para Diesel): ').lower()

if combu == 'e':
    if ltr <= 15:
        pagar = (ltr * 1.70) - (ltr * 1.70 * 0.02)
    else:
        pagar = (ltr * 1.70) - (ltr * 1.70 * 0.04)
    print(f'O valor a pagar sera {pagar:.2f}')
elif combu == 'd':
    if ltr <= 15:
        pagar = (ltr * 2.00) - (ltr * 2.00 * 0.03)
    else:
        pagar = (ltr * 2.00) - (ltr * 2.00 * 0.05)
    print(f'O valor a pagar sera {pagar:.2f}')
else:
    print("Tipo de combustível inválido.")

Neste ajuste, usei elif para garantir que apenas o bloco correspondente ao tipo de combustível escolhido seja executado. Além disso, adicionei uma verificação para um tipo de combustível inválido.

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Excelente!

Perfeito, entendi, como são independentes a solução é uni-los e "Quebra-los", de certa forma, em pedaços menores. Fico extremamente agradecido, Obrigado!