Computer Sciences Department logo

CS 368-2 (2012 Spring) — Day 2 Homework

Due Monday, October 29, at the start of class.

Goal

Write a Python script that plays a simple number-guessing game with the user.

Tasks

Use the basic Python that you have learned to write a simple game program.

The user will run the script, think of a number between 1 and 100, and then the script will repeatedly guess what the number is. Read that again: The user makes up a number, and the computer tries to guess it! Every semester, someone gets that backward — do not be that person.

For each guess, the user indicates whether it is correct, too high, or too low. A typical interaction might look like this (the human user’s input is highlighted in yellow):

Welcome to the number-guessing game!
Think of a number between 1 and 100.

I guess 50.
Is this (c)orrect, (h)igh, or (l)ow? h
Too high, I'll guess lower.

I guess 25.
Is this (c)orrect, (h)igh, or (l)ow? l
Too low, I'll guess higher.

I guess 42.
Is this (c)orrect, (h)igh, or (l)ow? c
I got it!

While a binary search is clearly the optimal strategy here, it does not really matter what strategy your script implements as long as it is guaranteed to find any possible answer eventually.

Testing

Testing your code is very important! If you do not run your code, you will make mistakes and probably not receive full credit. And even just running your code once may not be enough. Try different cases and make sure things work as you expect.

Here are some specific tests to consider:

Reminders

Start your script the right way! Here is a suggestion:

#!/usr/bin/env python

"""Homework for CS 368-4 (2012 Fall)
Assigned on Day 02, 2012-10-25
Written by <Your Name>
"""

Do the work yourself, consulting reasonable reference materials as needed. Any resource that provides a complete solution or offers significant material assistance toward a solution not OK to use. Asking the instructor for help is OK, asking other students for help is not. All standard UW policies concerning student conduct (esp. UWS 14) and information technology apply to this course and assignment.

Hand In

A printout of your code, ideally on a single sheet of paper. Be sure to put your own name in the “<Your Name>” part of the code. Identifying your work is important, or you may not receive appropriate credit.

Hints For New Programmers

Most importantly: Start early! Give yourself time to make mistakes, get stuck, and eventually work things out.

Before writing any code, think about how you would play this game, especially when you are guessing the other player’s number. Do you start guessing at 1, adding 1 to your guess each time you are wrong? No, not unless you want the game to take a very long time. Instead, you probably guess 50 and then ask whether you are correct, too high, or too low. Why 50? Because it is halfway between the highest possible number and the lowest possible number. Once you know whether you are too high or too low, you effectively cut in half the range of possible numbers. That is, your definition of “highest possible number” or “lowest possible number” changes, and then you apply the same process over again.

This is a good strategy for your program to follow, too. The fancy computer science term for the approach is binary search.

So, now that you have a general idea of the approach, you need to start organizing your thoughts into code. Here are a bunch of techniques that you can use; use some of them, or all of them together!