-6

Below is my code to generate random number between 0 - 9 and checking with user input whether it is higher lower or equal. When I run the code, it is not taking input and showing

error in 'guessNumber = int(input("Guess a Random number between 0-9")) File "", line 1 '

Can somebody please tell me where I'm making mistake

#Guess Random Number
#Generate a Random number between 0 to 9

 import random
 turn = 0

 def guessRandom():
    secretNumber = random.randint(0,9)
    guessNumber = int(input("Guess a Random number between 0-9"))
    while secretNumber != guessNumber:
       if(secretNumber > guessNumber):
          input("You have Guessed the number higher than secretNumber. Guess Again!")
          turn = turn + 1
       elif (secretNumber < guessNumber):
          input("You have guessed the number lower than secretNumber. Guess Again! ")
       turn = turn + 1
    if(secretNumber == guessNumber):
        print("you Have Guessed it Right!")

guessRandom() 
Stephen B
  • 1,246
  • 1
  • 10
  • 23

1 Answers1

0

I think guessRandom() was meant to be outside of the method definition, in order to call the method. The guessNumber variable never changes since the inputs are not assigned to be guessNumber, thus it will continuously check the initial guess. Also, the less than / greater than signs seem to conflict with the intended message. Additionally, turn is outside of the scope of the method.

#Generate a Random number between 0 to 9

import random


def guessRandom():
    secretNumber = random.randint(0, 9)
    guessNumber = int(input("Guess a Random number between 0-9: "))

    i = 0
    while secretNumber != guessNumber:
        if secretNumber < guessNumber:
            print "You have guessed a number higher than secretNumber."
            i += 1
        elif secretNumber > guessNumber:
            print "You have guessed a number lower than secretNumber."
            i += 1
        else:
            print("you Have Guessed it Right!")

        guessNumber = int(input("Guess Again! "))

    return i

turn = 0
turn += guessRandom()

EDIT: Assuming you're using input in Python3 (or using raw_input in older versions of Python), you may want to except for ValueError in case someone enters a string. For instance,

#Generate a Random number between 0 to 9

import random


def guessRandom():
    secretNumber = random.randint(0, 9)
    guessNumber = input("Guess a Random number between 0-9: ")

    i = 0
    while True:
        try:
            guessNumber = int(guessNumber)
        except ValueError:
            pass
        else:
            if secretNumber < guessNumber:
                print "You have guessed a number higher than secretNumber."
                i += 1
            elif secretNumber > guessNumber:
                print "You have guessed a number lower than secretNumber."
                i += 1
            else:
                print("you Have Guessed it Right!")
                break

        guessNumber = input("Guess Again! ")
    return i

turn = 0
turn += guessRandom()

I changed the while loop condition to True and added a break because otherwise it would loop indefinitely (comparing an integer to a string input value).

Community
  • 1
  • 1
Stephen B
  • 1,246
  • 1
  • 10
  • 23