Skip to content

Instantly share code, notes, and snippets.

@erj1
Created January 6, 2020 01:17
Show Gist options
  • Save erj1/98608a3f5bece7424b36f601732d2825 to your computer and use it in GitHub Desktop.
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/
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