So I've created this number guessing game. And it works fine up until the play_again function is needed. I have looked around trying to figure out how I can restart the program. I have tested this in my PyCharm IDE and it just exits with exit code 0. What is the best way to actually restart the program so it generates a new number in my rand variable?
import os from random import random import sys class Game: """ rand is declared by grabbing a number between 0 and 1, multiplying it by 100, and rounding to the nearest integer guessed is declared as false in order to keep the while loop running until the number is guessed """ rand = round(random() * 100, 0) guessed = False print("Guess the number [0 - 100]") # This function handles the number guessing and number formatting def run_game(self): # Assigns the 'answer' variable by grabbing user input from console answer = input() # Checks if the input from the console is a number, and if not, asks the user to enter a valid number if answer.isdigit(): n = int(answer) # Checks the input given against the random number generated while not self.guessed: if n > int(self.rand): print("Number is less than " + str(n)) self.run_game() elif n < int(self.rand): print("Number is greater than " + str(n)) self.run_game() else: print("You have guessed the correct number!") self.guessed = True self.play_again() else: print("Please enter a number") self.run_game() return def play_again(self): reply = input("Play again? (y/n)") if reply.lower() == "y": python = sys.executable os.execl(python, python, *sys.argv) elif reply.lower() == "n": print("Thanks for playing!") else: self.play_again() if __name__ == "__main__": game = Game() game.run_game()