# Guess a Number Game

I am trying to create a simple Python project. It's a minigame about guessing a number.

It's a game where the computer will pick a random number from 1 to 10.

• The player needs to guess it correctly.
• Every wrong attempt will give you a clue.
• 3 clues and the player will lose.

I've built the code and it works just fine. Here's the code :

total = 0
guessme = 0

def GuessNum(guess):
global total
global guessme

prime = [2, 3, 5, 7]

if total == 0:
randnum = random.randint(1,10)
guessme = randnum

total += 1

if guess == guessme:
print("You are correct!")
guessme = 0
total = 0
else:
if total == 1:
if guessme % 2 == 0:
print("The number is even")
else:
print("The number is odd")

elif total == 2:
if guessme > 5:
print("The number is greater than 5")
else:
print("The number is smaller than 5")

elif total == 3:
if guessme in prime:
print("The number is prime")
else:
print("The number is not a prime")

else:
guessme = 0
total = 0
print("You failed to guess the number.")


Are there ways to make this code much more efficient or shorter? I am still new at programming so I would love to learn new things.

• How are you taking input from the user? Also since you are using a function try to use return instead of global variables. – Roni Saiba Dec 1 '20 at 18:09
• Printing The number is smaller than 5 when the number is 5 is, hm, tricky. – greybeard Dec 1 '20 at 20:51

The code is fairly okay and readable. Since you highlighted performance, my review would not touch on some areas that are lacking.

## Prefer random.random() to generate pseudorandom numbers

import timeit

test1 = '''
import random
random.randint(1,10)
'''

test2= '''
import random
int(10 * random.random())
'''

tt1 = timeit.repeat(stmt=test1, repeat=5, number=1)
print('randint time taken: ', min(tt1))

tt2 = timeit.repeat(stmt=test2, repeat=5, number=1)
print('random.random() time taken: ', min(tt2))



On running the above program, the following results were gotten. NOTE: The results might vary on your computer, but there is still some difference.

randint time taken = 2.1700000005546375e-06

random.random() time taken = 6.056000074750045e-06



Though the difference is insignificant, it might mean a lot when the range increases.