After the lab, you should be proficient at
We'll practice writing several Python programs, each in their own text file. Name the files lab6.1.py through lab6.4.py.
Your programs will be graded on correctness, style, efficiency, and how well you tested them. Make sure you adhere to the good development and testing practices we discussed in class. Your code should be readable and your output should be useful and well-formatted.
After you've developed a correct solution to each program, restart IDLE or close and reopen the IDLE "shell" by running the program again (using F5), demonstrate that the program works using several good test cases, and save the output to a file named lab6.x.out, where x is the problem number.
append
the
values in a loop.
range
function.
Print out and label both lists.
This program reads in a phrase and produces a text shorthand. Enter a phrase: This phrase doesn't stand for anything Shorthand is: tpdsfa
1 6 2 7 3 8 4 9 5 10
/home/courses/cs111/handouts/lab6
dealornodeal.handout.py
contains the main
function to play the game Deal or No Deal. For this problem,
you will fill in the code for the functions to make the game work
correctly. You should not modify the main function, and you should
not modify the function headers (i.e., don't modify the number
parameters). Rename dealornodeal.handout.py
as
dealornodeal.py
.
Note that this program does not execute successfully.
First, you should read through the program and get an idea of how it works. For example, how does the program keep track of the cases that have not been opened? How does the program keep track of the amounts that have not been revealed? (Why are these two different variables?) When does the game end?
You should tackle the functions in this order, writing each one and then testing how far your program gets with each one.
readCaseValues()
: read the amounts that the cases
contain from the file named "case_values.txt" and save them in a list
that is returned to the main function.
printCasesLeft(cases)
: print the cases that haven't
been chosen, i.e., the cases that the player can select from. So that
the user can read all the cases easily, break them up in reasonably
lengthed rows, in formatted columns, such as
Cases Left to Choose from: 0 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
printBoard(amounts)
: print the amounts left on the
board in two columns. The amounts that have been opened should still
be on the board, just marked as having been chosen. The left column
should contain the smaller amounts. Example output:
****************************** The Board: $ 0.01 ---- $ 1.00 $ 5000.00 $ 5.00 $ 10000.00 $ 10.00 $ 25000.00 ---- $ 50000.00 $ 50.00 $ 75000.00 $ 75.00 ---- $ 100.00 $ 200000.00 $ 200.00 ---- $ 300.00 ---- $ 400.00 $ 500000.00 $ 500.00 ---- $ 750.00 $1000000.00 ******************************
isValidChoice(cases, choice)
: return True iff the
choice is a valid choice (has not already been chosen and is a valid
case number)
getUserChoice(cases, prompt)
: Repeatedly prompts the
user for a case number until the user selects a valid case. Returns
the valid choice.
Testing: You will need to run this program several times to make sure it is working correctly.
Keep track of how much players are winning/losing in aggregate in a
file called payout.dat
. We'll consider the payout
to be the difference between the player's case and the deal made. If
the player does not make a deal, the payout is 0.
Read in the payout from the file. (Start the payout file at 0.) At the end of the game, print the new total payout to the file. Doing this part (reading/writing a file) will earn you 5 extra credit points.
After you've played the game approximately 10 times, you have a pretty good idea of the payouts. (Admittedly, the payout depends on luck and how good your player is.)
Then, try writing a modified offer function and comparing that payout to the other payout. Justify your function in comments.
turnin
directory.
(Review the UNIX handout if you don't
remember how to do that.)
printLab.sh
command. You should probably print from the
labs
directory.
Print the file using the lpr
command introduced in the
first lab.
Labs are due at the beginning of Friday's class. You should hand
in the printed copy at the beginning of class, and the electronic
version should be in the turnin
directory before 2:25
p.m. on Friday.
Ask well before the deadline if you need help turning in your assignment!