The string passed to int() should contain only numbers:
>>> int("stop") Traceback (most recent call last): File "<ipython-input-114-e5503af2dc1c>", line 1, in <module> int("stop") ValueError: invalid literal for int() with base 10: 'stop'
A quick fix will be to use exception handling :
def guessingGame(): global randomNum global userScore guessTry = 3 while True: guess = input('Guess a Number between 1 - 10, You have 3 Tries, or Enter Stop: ') try: if int(guess) == randomNum: print('Correct') break if int(guess) < randomNum: print('Too Low') guessTry = guessTry - 1 print('You have, ' + str(guessTry) + ' Guesses Left') if int(guess) > randomNum: print('Too High') guessTry = guessTry - 1 print('You have, ' + str(guessTry) + ' Guesses Left') if guessTry == 0: print('You have no more tries') return except ValueError:
And you can use guess.lower() == 'stop' to match any stop combination in upper and lower case:
>>> "Stop".lower() == "stop" True >>> "SToP".lower() == "stop" True >>> "sTOp".lower() == "stop" True
source share