-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathguess_the_number.py
66 lines (54 loc) · 1.66 KB
/
guess_the_number.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Guess the number game
from random import randrange
from time import sleep
# Get user number for secret number range
def get_secret_ceil():
while True:
try:
ceil = int(input("Enter the maximum natural number that can be guessed (at least 2): ").strip())
if ceil < 2:
print("Error! Number must be greater than 1")
return ceil
except ValueError:
print("Error! Not an integer")
# Check user input
def is_valid(number, ceil):
try:
if 0 < int(number) < ceil+1:
return True
else:
return False
except ValueError:
return False
# Print guessing animation
def animation(duration):
FRAMES = ("|", "/", "-", "\\", "|", "/", "-", "\\")
for _ in range(duration):
for i in FRAMES:
print(f"Guessing a number... {i}", end="", flush=True)
print("\r", end="", flush=True)
sleep(.125)
print("Welcome to Guess The Number game")
while True: # The main game loop
user_secret_ceil = get_secret_ceil()
animation(2) # animation for 3 seconds
secret_number = randrange(1, user_secret_ceil+1)
moves = 0
print(f"Enter an integer from 1 to {user_secret_ceil}")
while True: # The current game loop
guess = input().strip()
if not is_valid(guess, user_secret_ceil):
print(f"Maybe you can enter an integer from 1 to {user_secret_ceil}?")
continue
else:
moves+=1
if int(guess) < secret_number:
print("Your guess is too low, try again")
elif int(guess) > secret_number:
print("Your guess is too high, try again")
else:
print(f"You guess the number in {moves} guesses. Good job!")
break
if input("Would you like to try again? (y/n)\n").strip().lower() != "y":
break
print("Thanks for playing the game. See you around...")