Skip to content

Commit 6ce1389

Browse files
committed
added new number guessing game
1 parent 4cabf59 commit 6ce1389

1 file changed

Lines changed: 76 additions & 0 deletions

File tree

‎strings/number_guessing.py‎

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
"""Number Guessing Game.
2+
3+
A simple game where the user guesses a randomly generated number
4+
within a user-defined range.
5+
6+
Reference: https://en.wikipedia.org/wiki/Guessing_game
7+
"""
8+
9+
import random
10+
11+
12+
def get_top_of_range() -> int:
13+
"""
14+
Get the upper bound of the guessing range from the user.
15+
16+
>>> isinstance(get_top_of_range(), int)
17+
True
18+
"""
19+
top_of_range = input("Enter the upper bound number: ")
20+
if top_of_range.isdigit():
21+
top_of_range = int(top_of_range)
22+
if top_of_range <= 0:
23+
print("Please enter a number larger than 0.")
24+
quit()
25+
else:
26+
print("Please enter a valid digit.")
27+
quit()
28+
return top_of_range
29+
30+
31+
def get_guess() -> int:
32+
"""
33+
Get a valid integer guess from the user.
34+
35+
>>> isinstance(get_guess(), int)
36+
True
37+
"""
38+
while True:
39+
guess = input("Please make a guess: ")
40+
if guess.isdigit():
41+
return int(guess)
42+
print("Please type a number next time.")
43+
44+
45+
def play_game(top_of_range: int) -> int:
46+
"""
47+
Play the number guessing game and return the number of guesses.
48+
49+
>>> import random
50+
>>> random.seed(42)
51+
>>> play_game(1)
52+
Whoa! You got it.
53+
1
54+
"""
55+
random_number = random.randint(0, top_of_range)
56+
guesses = 0
57+
58+
while True:
59+
guesses += 1
60+
guess = get_guess()
61+
62+
if guess == random_number:
63+
print("Whoa! You got it.")
64+
break
65+
elif guess < random_number:
66+
print("Too low! Try higher.")
67+
else:
68+
print("Too high! Try lower.")
69+
70+
return guesses
71+
72+
73+
if __name__ == "__main__":
74+
top = get_top_of_range()
75+
total_guesses = play_game(top)
76+
print(f"You got it in {total_guesses} guesses!")

0 commit comments

Comments
 (0)