CS21 Lab 1: First Programs
Due Saturday, September 10, by 11:59pm
In this lab you will write a few basic python programs. For each program, we
provide specifications and some sample output. Edit the files after running
update21
and then run handin21
to submit your solution. Complete a short
questionnaire once you are done. Full details are below.
Programming Tips
As you write programs, use good programming practices:
-
Use a comment at the top of the file to describe the purpose of the program (see example).
-
All programs should have a
main()
function (see example). -
Use variable names that describe the contents of the variables.
-
Write your programs incrementally and test them as you go. This is really crucial to success: don’t write lots of code and then test it all at once! Write a little code, make sure it works, then add some more and test it again.
-
Don’t assume that if your program passes the sample tests we provide that it is completely correct. Come up with your own test cases and verify that the program is producing the right output on them.
-
Avoid writing any lines of code that exceed 80 columns.
-
Always work in a terminal window that is 80 characters wide (resize it to be this wide)
-
In
vscode
, at the bottom right in the window, there is an indication of both the line and the column of the cursor. == Are your files in the correct place?
-
Make sure all programs are saved to your cs21/labs/01
directory! Files
outside that directory will not be graded.
$ update21 $ cd ~/cs21/labs/01 $ pwd /home/username/cs21/labs/01 $ ls Questions-01.txt (should see your program files here)
Goals
The goals for this lab assignment are:
-
Write your first
python
programs! -
Practice using an editor
-
Use variable assignment to store values
-
Get comfortable with
print()
andinput()
-
Get comfortable with python data types:
int
,float
,str
-
Use type casting with
input()
to get numeric data
1. A first program (Optional Warmup)
The file intro.py
is initially empty. Practice using an editor and type in
the program below. Note that since the point is to start getting used to typing
Python code, you should actually type this, rather than using copy/paste.
This part will not be graded; it is an optional (but recommended) warmup to
help make sure you understand the workflow before you start trying to come up
with your own code.
After saving your file, run the program and fix any errors.
Here is the program to type:
"""
This is a sample python program
Author: <Put your name here>
Date: <Put today's date here>
"""
#define the main function
def main():
name = input("What is your name? ")
print("Hello")
print(name)
print("Nice to meet you")
# run the body of the main function defined above
main()
Here are two examples of the running program. User input is shown in bold.
$ python3 intro.py What is your name? Emily Hello Emily Nice to meet you
$ python3 intro.py What is your name? Ada Lovelace Hello Ada Lovelace Nice to meet you
2. Nonsense Cookery
There are many interesting forms of computational poetry; for this part of your lab, you will write a program to generate nonsense recipes inspired by those of Edward Lear: here are some examples.
Write a program, in the recipe.py
file, that generates a simple recipe based
on user input. It should prompt the user for several words, and then combine
them with a template to print out a statement (this program is similar to a Mad
Lib).
The basic template should look like this:
TO MAKE RECIPE_NAME Take INGREDIENT_1 and place it in VESSEL; add INGREDIENT_2 and COMBINE.
Each of the bolded statements represents a string you’ll need to get from the user.
2.1. Sample Output
Here are two examples of running the program; user input is shown in bold.
$ python3 recipe.py Enter the name of the recipe: Noodle Soup Enter the first ingredient: broth Enter the second ingredient: noodles Enter a noun for putting things in: pot Enter a verb for combining things: simmer ---------------------------------------- TO MAKE Noodle Soup Take broth and place it in pot; add noodles and simmer.
$ python3 recipe.py Enter the name of the recipe: CS21 Enter the first ingredient: a live python Enter the second ingredient: 3/4 C. theory (coarsly chopped) Enter a noun for putting things in: your brain Enter a verb for combining things: stir gently for 14 weeks ---------------------------------------- TO MAKE CS21 Take a live python and place it in your brain; add 3/4 C. theory (coarsly chopped) and stir gently for 14 weeks.
A note on printing strings
Printing Strings in Python
Remember that you can concatenate (
will result in the output hithere Note that this does not add a space between the two parts; if you want the words separated, you have to add the space manually, e.g.:
(note the extra space after hi there Also note that you can use
will result in the output hi there cs21! |
2.2. (Optional) More interesting recipes
The template we used for the previous program is a bit simplistic; it works, but you’re very limited in the type of nonsense-recipe you can make with it.
For an (optional) extra challenge, create another program called
recipe_extra.py
that works similarly to the one above, but involves a more
interesting template. Exactly how you want this program to work is up to you;
how many different words do you want to get from the user, and what sort of
prompts will you use? What sort of template will you use to combine those
words into a "recipe"? Be creative, and try out several different options!
3. Python Math Operators
To familiarize yourself with python’s math operators, write a program called
python_math.py
that asks the user for two integer operands and shows the
results of applying each of the following operators:
-
Addition (
+
) -
Subtraction (
-
) -
Multiplication (
*
) -
Division (
/
) -
Integer division (
//
) -
Mod (
%
) -
Exponentiation (
**
)
3.1. Sample Output
Here are two examples of the running program. User input is shown in bold.
$ python3 python_math.py This program tests some python mathematical operators Enter a positive integer value: 12 Enter another (small) positive integer value: 5 12 + 5 = 17 12 - 5 = 7 12 * 5 = 60 12 / 5 = 2.4 12 // 5 = 2 12 % 5 = 2 12 ** 5 = 248832
$ python3 python_math.py This program tests some python mathematical operators Enter a positive integer value: 13 Enter another (small) positive integer value: 2 13 + 2 = 15 13 - 2 = 11 13 * 2 = 26 13 / 2 = 6.5 13 // 2 = 6 13 % 2 = 1 13 ** 2 = 169
A note on strings and numbers
Converting between Strings and Numbers in Python
Remember that user input starts out as a string, so you’ll need to convert it to an appropriate numeric type before you can do math with it. E.g.:
Here, Note that this latter fact means that in order to print int or float values and
strings such as
produces the following output: value = 6 |
4. Split the Dinner Bill
In the file share_table.py
, implement a program that helps the user divide up
a bill between several friends sharing a meal at a restaurant. For this
assignment, we’ll assume that the bill can be split evenly.
You’ll need to prompt the user for the base cost, the percentage to tip, and the number of people splitting things. Then calculate the actual tip amount, add it to the base cost, and devide the result by the number of people.
You should assume that the number of people and tip percentage are integers, and that the base cost is a floating point number.
You do not have to worry about having an even number of pennies (i.e. exactly two decimal places). If you want to attempt this as an extra challenge, see the optional section on rounding below.
4.1. Sample Output
Here are two examples of the running program. User input is shown in bold.
$ python3 share_table.py Welcome to the share-a-table app! Enter the amount on the bill: $27 Enter the tip percentage: 20 Enter the number of people splitting the bill: 2 ---------------------------------------- Subtotal: $27.0 Tip: $5.4 Total: $32.4 Each person should contribute: $16.2
$ python3 share_table.py Welcome to the share-a-table app! Enter the amount on the bill: $43.71 Enter the tip percentage: 25 Enter the number of people splitting the bill: 5 ---------------------------------------- Subtotal: $43.71 Tip: $10.9275 Total: $54.6375 Each person should contribute: $10.9275
4.2. (Optional) Rounding
As an optional challenge, you can use Python’s built-in
round() function to
round your results to the nearest cent (i.e. 2 digints after the decimal
place). To use it, add a call to round
with two parameters: the number to
round and the number of digits beyond the decimal point to which you want to
round.
For example, if you wanted to round the square root of 2 to two decimal places:
# raising a number to the power of 1/2 is the same as taking the square root
sqrt2 = 2.0 ** 0.5
sqrt2_rounded = round(sqrt2, 2)
print("square root of 2 is: " + str(sqrt2))
print("square root of 2 to two decimal places is: " + str(sqrt2_rounded))
Which produces:
square root of 2 is: 1.4142135623730951 square root of 2 to two decimal places is: 1.41
A Note on Line Breaks
Line Continuation (\) in Python
Each line of in your program files should not be longer than 80 characters. This is because 80 characters is the historical "standard" width of terminals, and also because when we print out your programs to grade it will display only 80 characters of width. Occasionally, you will find that you have a very long Python statement that
exceeds 80 characters long. In this case you can use the Python line
continuation character For example:
Working in a window 80 characters wide will help you detect when you have a line that is too long and needs to be continued. |
5. Answer the Questionnaire
Each lab will have a short questionnaire at the end. Please edit
the Questions-01.txt
file in your cs21/labs/01
directory
and answer the questions in that file.
Once you’re done with that, you should run handin21
again.
Submitting lab assignments
Remember to run handin21
to turn in your lab files! You may run handin21
as many times as you want. Each time it will turn in any new work. We
recommend running handin21
after you complete each program or after you
complete significant work on any one program.
Logging out
When you’re done working in the lab, you should log out of the computer you’re using.
First quit any applications you are running, like the browser and the terminal. Then click on the logout icon ( or ) and choose "log out".
If you plan to leave the lab for just a few minutes, you do not need to log out. It is, however, a good idea to lock your machine while you are gone. You can lock your screen by clicking on the lock icon. PLEASE do not leave a session locked for a long period of time. Power may go out, someone might reboot the machine, etc. You don’t want to lose any work!