Search code examples
pythonloopsrestart

How do you start a Python game loop?


I have this very simple console game and I would like to restart the loop after the user answers a question but something doesn't seem to work properly.

import random

random_number = random.randrange(0, 500)
chosen_number = int(input("Please pick a number: "))
gameOn = 1

while gameOn == 1:
    if chosen_number == 500 or chosen_number <= 0 :
        print("Number must be below 500 and above 0.")
        print(random_number)
        chosen_number = int(input("Please pick a number: "))
        continue
    if chosen_number > random_number:
          print("Too high")
          chosen_number = int(input("Please pick a number: "))
    elif chosen_number < random_number: 
          print("Too low")
          chosen_number = int(input("Please pick a number: "))
    else:
        print("Congratulations, you guessed right. The number was " + str(chosen_number) + ".")
        break

    answer = input("Do you want to play again? Y/N ")

    if answer == "Y" or "y" or "yes":
        gameOn = 0
    else:
        print("Goodbye!")

Solution

  • You can do a simple thing, just put the whole code in a function and when you want to restart just call the function

    Look at the code below:

    import random
    
    def game():
      random_number = random.randrange(0, 500)
      chosen_number = int(input("Please pick a number: "))
    
      while True:
          if chosen_number == 500 or chosen_number <= 0 :
              print("Number must be below 500 and above 0.")
              print(random_number)
              chosen_number = int(input("Please pick a number: "))
              continue
          if chosen_number > random_number:
                print("Too high")
                chosen_number = int(input("Please pick a number: "))
          elif chosen_number < random_number: 
                print("Too low")
                chosen_number = int(input("Please pick a number: "))
          else:
              print("Congratulations, you guessed right. The number was " + str(chosen_number) + ".")
              break
    
          answer = input("Do you want to play again? Y/N ")
    
          if answer.lower() == "y" or "yes": # Lower() is used for changing the whole string to lowercase
              game()
          else:
              print("Goodbye!")