Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

bug na entrada invalida.

Olá no exercício proposto de número 12, eu fiz algumas alterações para mostrar ao usuário o valor do desconto, porém quando o valor de entrada na quantidade de combustível é igual a 0, não aparece a msg de valor inválido do ultimo else, isso acontece tbm quando eu digito outra opção que não foi nem E nem G. Não encontrei esse bug, pode me ajudar? segue codigo abaixo! obrigaduuuu

Qt_litros = float(input('Informe a quantidade de litros:'))
tipo_combustivel = input('Informe o tipo de combustível: E para Ethanol ou G para Gasolina.').upper()

if tipo_combustivel == 'E':
  preco_litro = 3.19
  if Qt_litros <= 15:
     desconto = 0.02
  else:
     desconto = 0.05
elif tipo_combustivel == 'G':
  preco_litro = 5.19
  if Qt_litros <=15:
    desconto = 0.02
  else:
    desconto = 0.05
else:
  print('Entrada Inválida!')
  preco_litro = 0
  desconto = 0
  desconto_real = 0



valor_desconto = preco_litro * Qt_litros * desconto
valor_bruto = preco_litro * Qt_litros
valor_pago = preco_litro * Qt_litros - valor_desconto
desconto_real = valor_bruto % valor_pago
print(f'O valor a ser pago pelo cliente: R$ %.2f .Obteve um desconto de: R$ %.2f' %(valor_pago, desconto_real))

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá Carlos, tudo bem?

Testei o seu código utilizando como entrada na quantidade de litros 0 e o tipo de combustível utilizando a letra M. Ou seja, entradas inválidas e a saída foi a seguinte:

captura de tela da saída utilizando quantidade de litros 0 e combustivel com letra M. Há o erro ZeroDivision Error

Note que a mensagem 'Entrada Inválida' é exibida, mas o código continua a executar as linhas seguintes que calculam o valor do desconto e o valor a ser pago, gerando o erro de divisão por zero.

Para resolver isso, você pode adicionar uma verificação para garantir que o cálculo só seja feito se as entradas forem válidas:

Qt_litros = float(input('Informe a quantidade de litros:'))
tipo_combustivel = input('Informe o tipo de combustível: E para Ethanol ou G para Gasolina.').upper()

# Inicializa variáveis
preco_litro = 0
desconto = 0

# Verifica se a quantidade de litros é válida
if Qt_litros <= 0:
    print('Entrada Inválida! Quantidade de litros deve ser maior que zero.')
else:
    if tipo_combustivel == 'E':
        preco_litro = 3.19
        if Qt_litros <= 15:
            desconto = 0.02
        else:
            desconto = 0.05
    elif tipo_combustivel == 'G':
        preco_litro = 5.19
        if Qt_litros <= 15:
            desconto = 0.02
        else:
            desconto = 0.05
    else:
        print('Entrada Inválida! Tipo de combustível deve ser E ou G.')

    # Só realiza os cálculos se as entradas forem válidas
    if preco_litro > 0:
        valor_desconto = preco_litro * Qt_litros * desconto
        valor_bruto = preco_litro * Qt_litros
        valor_pago = valor_bruto - valor_desconto
        desconto_real = valor_bruto - valor_pago
        print(f'O valor a ser pago pelo cliente: R$ {valor_pago:.2f}. Obteve um desconto de: R$ {desconto_real:.2f}')

Assim, se a quantidade de litros for menor ou igual a zero, ou se o tipo de combustível não for 'E' ou 'G', o programa irá imprimir uma mensagem de entrada inválida e não prosseguirá com os cálculos.

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

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