How to get back inside the while

Asked

Viewed 53 times

-1

I have a Dungeon code, in which the user can choose path 1 or path 2, each path leads to a room. In case he reaches room 8 I need a value between 1 and 5 to be drawn and return the respective room to this value. (I cannot use more than one if, Elif or Else within my loop)

from random import randrange

import os

os.system('CLS')

tentativas = 1

sala = 1


while tentativas <= 7 and sala <= 7 and sala:

    print("Você está na sala: {}\nEscolha seu caminho".format(sala))

    print("[1] - Caminho Vermelho\n[2] - Caminho Preto")

    escolha = int(input())

    if escolha == 1:
        sala += 1
    elif escolha == 2:
        sala += 2
    else:
        ("Não existe esse caminho!")
    os.system('CLS')
    tentativas += 1


if tentativas >= 7:

    print("Você gastou todos seus recursos, não há mais saidas, você e seus companheiros morreram")

elif sala == 9:

    print("Você está na sala: {}\nVocê venceu!!".format(sala))

elif sala == 8:

    sala = input(randrange(1, 5))

I would like a solution where when generating the randrange my code returned inside the loop.

  • can you fix the code? you have separated into several blocks and have missing indentation &#xA;coloque tudo assim&#xA;

  • Could format the code for a better view?

  • In your first while failed to inform the expression for variable room.

1 answer

1


You can turn while into a function so you can call it whenever you want without having to copy and paste the same code in several places, I updated your code based on what I understood from your question, if it is not exactly what you wanted or did not understand something of the code is just say that we take a look.

from random import randrange

import os

def dungeon(tentativas, sala): # Esse código recebe como parametro a quantidade atual de tentativas e o numero da sala
    # Sempre que essa função for chamada ela realiza esse while
    while tentativas <= 7 and sala <= 7 and sala:

        print("Você está na sala: {}\nEscolha seu caminho".format(sala))

        print("[1] - Caminho Vermelho\n[2] - Caminho Preto")

        escolha = int(input())

        if escolha == 1:
            sala += 1
        elif escolha == 2:
            sala += 2
        else:
            ("Não existe esse caminho!")
        os.system('CLS')
        tentativas += 1
    
    # Após o while ser realizado ele retorna para os valores de tentativas e sala
    return tentativas, sala

os.system('CLS')

tentativas = 1
sala = 1

tentativas, sala = dungeon(tentativas, sala)

if tentativas >= 7:

    print("Você gastou todos seus recursos, não há mais saidas, você e seus companheiros morreram")

elif sala == 9:

    print("Você está na sala: {}\nVocê venceu!!".format(sala))

elif sala == 8:

    sala = randrange(1, 5)

    tentativas = 1
    tentativas, sala = dungeon(tentativas, sala)
  • Thank you very much for your help, you solved my problem. I will research more on the def function to use in future codes, got really much better.

Browser other questions tagged

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