problems with IF and ELSE

Asked

Viewed 90 times

-2

I’d like to know how to get the program back to the first if or elif if the user’s answer does not fit the distance question.

I put a else with a print("responda sim ou não") and if the answer is not s | n the program is finished. But I want it to ask the distance again until the user answers correctly.

nome = input("Qual é o seu nome? \n")

pergunta = (input("{}, você sabe a distância?\n ".lower().format(nome)))

if pergunta.startswith('s'):

    distancia = float(input("qual é a distância?\n"))

    aproveitamento = float(input('{}, quantos quilometros seu carro faz por litro? \n'.format(nome)))

    precogas = int(input('{}, qual é o preço da gasolina atualmente?\n'.format(nome)))

    consumo = distancia / aproveitamento

    print("Foram gastos ", consumo, " litros de combustível.")

    custo = consumo * precogas

    print("E você vai gastar", custo, "reais")

elif pergunta.startswith('n'):

    tempohoras = float(input("{}, digite o tempo gasto na viagem (Apenas quantas horas): \n".format(nome)))

    tempominutos = float(input("{}, e quantos minutos? \n".format(nome)))

    velocidade = float(input('{}, digite agora a velocidade média durante a viagem:\n'.format(nome)))

    aproveitamento = float(input('{}, quantos quilometros seu carro faz por litro? \n'.format(nome)))

    precogas = float(input('{}, qual é o preço da gasolina atualmente?\n'.format(nome)))

    consumo = (velocidade * (tempohoras + (tempominutos / 60))) / aproveitamento

    print("Foram gastos ", consumo, " litros de combustível.")

    custo = consumo * precogas

    distancia = velocidade * (tempohoras + (tempominutos / 60))

    print("E você vai gastar", custo, "reais")

    print("A distância percorrida foi de ", distancia, "quilometros.")

else:
    print ("responda sim ou não")
  • The first thing here would be you [Dit] and reduce the code to a [mcve] (this lot of input is irrelevant to the problem, reduce the code only to what matters). Use the button now { } from the formatting bar or control/command k to format the code block.

1 answer

0

Just put your code inside a block while passing some instruction or using the break to exit the block and proceed with the code. See the example below:

nome = input("Qual é o seu nome? \n")

while True:

    pergunta = input("{}, você sabe a distância?\n ".lower().format(nome))

    if not pergunta[0] in "sn": 
        print("Responda sim ou não.")
    else: 
        break

# Resto do código ...

What the while repeats a block of code while a condition is true. See its syntax below:

while condição:      
    # Código...

In the above example, it repeats the code asking for a valid response to the user, and if the answer is correct, it will prompt the while with the statement break.

  • What is the reason for the negative since the algorithm meets the requirements of the question?

  • This is happening a lot this week. There’s some funny Rollando here on the site ;p

  • Calm down, do not judge hastily, sometimes it is the AP that did not understand how to fit the algorithm into your code.

Browser other questions tagged

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