Guess a number

From Computer Science Wiki
Jump to: navigation, search
This a problem set for you to work through [1]

This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are to HELP YOU THINK THROUGH problems. The solution is at the bottom of this page, but please don't look at it until you have tried (and failed) at least three or four times.


What is this problem set trying to do

You have to think about conditionals and computational thinking here. You are also going to be incrementingan increase or addition, especially one of a series on a fixed scale. variables.

The Problem

Please write a simple game that randomly selects a numberA unit of abstract mathematical system subject to the laws of arithmetic. between 0 and 100. A player must guess the numberA unit of abstract mathematical system subject to the laws of arithmetic.. Your program should tell the player if their guess is higher or lower than the secret numberA unit of abstract mathematical system subject to the laws of arithmetic..

  1. Your program must generate a random numberA unit of abstract mathematical system subject to the laws of arithmetic. between 0 and 100 and assign that random numberA unit of abstract mathematical system subject to the laws of arithmetic. to a variable.
  2. Your program must ask the player to guess a numberA unit of abstract mathematical system subject to the laws of arithmetic.
  3. Your program must compare the players guess and the secret numberA unit of abstract mathematical system subject to the laws of arithmetic.. The program should tell the player if their guess is higher or lower than the secret numberA unit of abstract mathematical system subject to the laws of arithmetic.
  4. Your program must tell the player if they have won
  5. Your program must ask the player if they want to play again

Some Code to Get You Started

This code will not run. If you see ... I have left out code, and you have to figure out what to put in.

 1 import random
 2 secret_number = ...
 3 guess = 0
 4 game = 1
 5   
 6     print("This is guess: " + str(guess))
 7     print("This is game:" + str(game))
 8     player_guess = input("Please make a guess: ")
 9     guess = guess +1
10    
11 ...
12        
13         play_again = input("Do you want to play again? ")
14         if play_again == "y" or play_again == "Y" or play_again == "yes":
15             guess = 0
16             game = game + 1
17         break
18  ....

Take This Further

  1. add in a condition that players only have a certain numberA unit of abstract mathematical system subject to the laws of arithmetic. of turns to win
  2. add in a difficulty level; easy, medium and expert. If a player has easy, they have 8 tries, medium, they have only 4 tries, and expert, only 2 tries!!
  3. you can tell a player if their guess is "a little to high or a little to low" or you can say "your guess is way to high or way to low"

How you will be assessed

Every problem set is a formative assignment. Please click here to see how you will be graded

References

A possible solution

Click the expand link to see one possible solution, but NOT before you have tried and failed!

#Finished on 4/10/18
#Can catch errors and let users input again
#Author: Filip
import random
secret_number = random.randint(1, 100)
counter = 0

while True:
    try:
        difficulty_level = int(input("What level difficultly level do you want(1-easiest 5-impossible): "))
        if difficulty_level < 1 or difficulty_level > 5:
            raise NameError()
    except ValueError:
        print("ERROR: You can only input numbers!")
        continue
    except NameError:
        print("ERROR: Please input a number between 1 and 5.")
        continue
    else:
        if difficulty_level == 1:
            turns_left = 15
        elif difficulty_level == 2:
            turns_left = 12
        elif difficulty_level == 3:
            turns_left = 10
        elif difficulty_level == 4:
            turns_left = 7
        elif difficulty_level == 5:
            turns_left = 5
        
        while counter<turns_left:
            try:
                user_guess = int(input("What do you think the number is (1-100): "))
            except ValueError:
                print("ERROR: You can only input numbers!")
            else:
                if user_guess<101 and user_guess > 0:
                    if user_guess>secret_number:
                        counter += 1
                        if user_guess-secret_number <4:
                            print("GUESS A LITTLE LOWER") 
                        else:
                            print("GUESS LOWER")
                    elif user_guess<secret_number:
                        counter += 1
                        if secret_number-user_guess <4:
                            print("GUESS A LITTLE HIGHER")
                        else:
                            print("GUESS HIGHER")
                    else:
                        counter += 1
                        print("Good job!! It took you " + str(counter) + " tries.")
                        break
                else:
                    print("ERROR: Your number has to be between 1 and 100!")
        if counter>=turns_left:
            print("GAME OVER: You ran out of turns")
    break