CS21 Lab6: While Loops and Functions

Due 11:59pm Tuesday, March 3

Run update21, if you haven't already, to create the cs21/labs/06 directory. Then cd into your cs21/labs/06 directory and create the python programs for lab 6 in this directory (handin21 looks for your lab 6 assignments in your cs21/labs/06 directory):

Your programs are graded on both correctness and style. Please review the comments regarding programming style on the main page.

getLetter function

Write a program, getletter.py, that calls a function getLetter. Your getLetter function should prompt the user to enter an alphabetic character (a-z, and A-Z) and return the letter to the caller. The getLetter function should continue to prompt the user to enter a letter until they enter a valid alphabetic character. The getLetter function should only print error messages and not the final accepted letter. The main function should call getLetter and then print out the letter getLetter returns.

Here are a few example runs of a working program:

$ python getletter.py
Enter a letter: 8
Hey, '8' isn't an alphabetic character, try again...
Enter a letter: ^
Hey, '^' isn't an alphabetic character, try again...
Enter a letter: abcdef
Hey, 'abcdef' isn't an alphabetic character, try again...
Enter a letter: A
The letter entered is: A

$ python getletter.py
Enter a letter: h
The letter entered is: h

Guess A Letter

Copy your getletter.py file to guess.py:

cp getletter.py guess.py
Modify the program in guess.py to implement a simple guessing game where the computer picks a random alphabetic character and the user tries to guess which letter was selected.

You should add a function to your game that:

Your main function should call this new function repeatedly until the user wins the game by guessing the correct letter. Your program should print out a message after each turn, indicating if the user's guess is correct or if they need to guess again.

To pick a random value, you need to first import functions from the random library:

from random import *
Then you can call the randrange function to get a random value from the specified range. For example, to pick a random value from the range 0,26 you would make the following call:
rand_val = randrange(0,26)

Here is what a few runs of your program might look like:

$ python guess.py
I'm thinking of a character between 'a' and 'z'
Let's see if you can guess it

Enter a letter: a
'a' is incorrect, try again...
Enter a letter: b
'b' is incorrect, try again...
Enter a letter: 9
Hey, '9' isn't an alphabetic character, try again...
Enter a letter: B
You already guessed 'b', try again...
Enter a letter: c
'c' is incorrect, try again...
Enter a letter: d
'd' is incorrect, try again...
Enter a letter: e
'e' is correct, you win in 5 guesses!!!

$ python guess.py
I'm thinking of a character between 'a' and 'z'
Let's see if you can guess it

Enter a letter: A
'a' is incorrect, try again...
Enter a letter: a
You already guessed 'a', try again...
Enter a letter: b
'b' is incorrect, try again...
Enter a letter: C
'c' is incorrect, try again...
Enter a letter: d
'd' is incorrect, try again...
Enter a letter: E
'e' is incorrect, try again...
Enter a letter: F
'f' is incorrect, try again...
Enter a letter: sdflsls
Hey, 'sdflsls' isn't an alphabetic character, try again...
Enter a letter: 9
Hey, '9' isn't an alphabetic character, try again...
Enter a letter: g
'g' is correct, you win in 7 guesses!!!

Submit

Once you are satisfied with your programs, hand them in by typing handin21 at the unix prompt.