Created
January 6, 2020 01:17
-
-
Save erj1/98608a3f5bece7424b36f601732d2825 to your computer and use it in GitHub Desktop.
This is my solution to the *Guess The Number* problem presented here: https://knightlab.northwestern.edu/2014/06/05/five-mini-programming-projects-for-the-python-beginner/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random | |
LEVELS = { | |
'easy': 10, | |
'normal': 100, | |
'hard': 1000, | |
'insane': 10000 | |
} | |
def print_title(): | |
print('=' * 20) | |
print('Guess The Number In As Few Tries As Possible') | |
print('=' * 20) | |
def select_random_number(level: str) -> int: | |
return random.randint(1, LEVELS[level]) | |
def select_a_level(): | |
print('Levels:') | |
levels = list(LEVELS.keys()) | |
for i, l in enumerate(levels): | |
print(f'\t{i}: {l.capitalize()}') | |
level = input(f'\nSelect A Level: ') | |
while not level.isdigit() or int(level) < 0 or int(level) >= len(levels): | |
print('Unknown Level Selected.') | |
level = input(f'Select A Level: ') | |
return levels[int(level)] | |
def validate_guess(guess: str, level: str): | |
if not guess.isdigit(): | |
return False, 'Your guess needs to be an integer' | |
if 0 >= int(guess) or int(guess) > LEVELS[level]: | |
return False, f'Your guess needs to be between 1 and {LEVELS[level]}' | |
return True, '' | |
def enter_a_guess(level): | |
guess = input('Enter Your Guess: ') | |
is_valid, error = validate_guess(guess, level) | |
while not is_valid: | |
print(error) | |
guess = input('Enter Your Guess: ') | |
is_valid, error = validate_guess(guess, level) | |
return int(guess) | |
if __name__ == '__main__': | |
print_title() | |
selected_level = select_a_level() | |
print(f'You selected: {selected_level.capitalize()}.') | |
selected_number = select_random_number(selected_level) | |
print(f'I have selected a number between 1 and {LEVELS[selected_level]}.') | |
print('Good Luck!') | |
tries = 1 | |
input_guess = enter_a_guess(selected_level) | |
while input_guess != selected_number: | |
tries += 1 | |
if input_guess < selected_number: | |
print('Too Low; Guess Higher') | |
input_guess = enter_a_guess(selected_level) | |
if input_guess > selected_number: | |
print('Too High; Guess Lower') | |
input_guess = enter_a_guess(selected_level) | |
print(f'Correct; My number was {selected_number}') | |
print(f'It took you {tries} tries to guess my number') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment