Lab 1: Linux, HTML, Python Programming, and Numeric Operations
Table of Contents:
Goals
After the lab, you should know how to
- create a Python program, run it, create output files, and submit it
- solve simple arithmetic problems in Python
Objective: Preparing for Lab
Review Lab 0 if you don't remember how to use the lab machines.
After logging into the lab machine in person and opening a terminal OR remotely logging into one of the lab machines, run labhelp.
Objective: Set up for Programming
- Open a terminal (if you haven't already).
- Create a directory called
lab1
in yourcs111
directory. Your programs and the output for this lab will all be saved in thelab1
directory. - Copy all the files from
the
/csci/courses/cs111/handouts/lab1/
directory that end in.py
into yourlab1
directory.
(Note: I made a shortcut forcs111
so you don't need to type the long course name.)
Objective: Introduction to the Python Interpreter (15 points)
On our system, you have two main options for writing Python programs:
- write your programs in a text editor (e.g., emacs) and use the
terminal to run Python. This is what I will tend to do in class.
OR
- write your programs in IDLE, using its shell to run the programs and then restart the shell to demonstrate your program working.
For your lab work, use IDLE.
Using the Interpreter in Interactive Mode
In a terminal, navigate to your directory for this lab, which you
set up earlier. (The directory should
be ~/cs111/lab1
.)
To open Python's integrated development environment IDLE,
use the command idle &
Recall: what does the &
allow you
to do?
You can use the interpreter in interactive mode to try out expressions before using them in a script. IDLE labels the interactive mode as "Python Shell". In IDLE, the main window--opened by default on start--is the interactive Python interpreter.
Type the following expressions at the Python interpreter prompt, one line at a time, and note what the interpreter returns:
- 26
- 1.414
- 3/4
- 3//4
- 'Hello there!'
- 'Hello ' + 'there!'
- 'Hi' * 4
- 'Hi' + 4
- 3/0
- 3 */ 4
- .1+.1+.1
- print("Hello, world!")
Save the output from the
interpreter in a file called
interactive_practice.out
.
Make
sure that this file is saved in the appropriate directory
(~/cs111/lab1
).
You won't see the file if you
try to open the file -- make sure you select all files in the
drop down box.
Using the Interpreter in Batch Mode
Now, still in IDLE, open the file
practice.py
and execute the program.Note that the output from executing
practice.py
is after all the output from your earlier practice.- Close IDLE's interactive Python window and
re-execute
practice.py
. This has the net effect of clearing the window so as not to pollute the output you'll print out when you submit the lab.
Save the output from the interpreter in
a file called practice.out
. Again, make sure that this
file is saved in the appropriate directory
(~/cs111/lab1
).
Objective: Writing Your Own First Programs
Your programs will be graded on both correctness and style. Style will become more important as the semester continues.
As you probably figured out, the convention is that the names of
Python scripts end in ".py
".
- (10 points) Copy
practice.py
into a file calledpractice2.py
. Modify the program in the following ways:- Change the first print statements to display another expression and value in the first statement and that same expression that results in that value in the second statement.
- Change the next two print statements to print out another emotion or adjective besides "happy".
- Modify the comments at the top of the program appropriately.
After you are sure that your program works and you have saved your program, start a new IDLE shell by closing the [current] shell and executing your program. Demonstrate that your program works. Save the output from the shell in a file called
practice2.out
. - (10 points) Write a Python program
called
info.py
that prints out information about yourself. The info printed should list your name, favorite pop culture icon, favorite color, and favorite dwarf (Sleepy, Sneezy, Happy, Grumpy, Dopey, Bashful, or Doc). Don't forget to document your program appropriately!Best practice: Use four separate print statements on four separate lines to print this information.
The output should look something like:
Name: Sara Sprenkle Favorite pop culture icon: Tina Belcher Favorite color: purple Favorite dwarf: Doc
After you are sure that your program works and you have saved your program, close the IDLE shell and re-execute the program. Save the output from the shell in a file called
info.out
.
Objective: Arithmetic Operations in Python
We'll practice writing several Python programs, each in their own
text file. Name the files lab1_1.py
through lab1_3.py
.
Your programs will be graded on correctness and style. Make sure you adhere to the good development practices we discussed in class, e.g., use good variable names.
After you've developed a correct solution to each program, close the
IDLE "shell" and reopen it by running the program again (using F5),
demonstrate that the program works, and save the output to a file
named lab1_x.out
, where x is the problem
number.
If you need help, you can use the Python visualizer. Make sure to select "Write code in Python 3". This is the same tool that is used in the online textbook.
- (15 pts) This problem has several parts. You will create a program (i.e.,
a script) in the first step and modify it for each subsequent step.
Note how the progression of steps for this problem adheres to the good
development practices we dicussed in class. Submit one program and one
output file. I'll know you did the steps from your comments.
- Create three variables (
i
,j
, andresult
) to calculate and display result = i² + 3j - 5 for the case where i=7 and j=2. Your code will not look exactly like this formula. Display the result and verify that the result is what you expect. Consider if you were the user of the program and make the program display appropriate output. Put the answer/output in a comment. - Change the name of the variable
i
toi21
. Be sure to change the name everywhere the variable is used. Execute it to verify it still works. - Now edit the Python script again and change the variable name
to
21i
. What error message do you get? Record in comments the error message and why the error message occurred. - Revert your program back to a correct variable name.
- Make sure that a user looking at your program's execution/output would understand what the program did.
- Create three variables (
- (10 pts) How do you measure, measure a year? The
musical Rent asks how you would measure a year and suggests
love as the metric. Since we don't have a primitive data type that
represents love, we'll measure a year in minutes. Write a program
that computes (or calculates) the number of minutes
in a year and plugs it into part of the chorus of Seasons Of
Love.
Note: do not recompute the number of minutes each time it is used in the chorus. Compute the minutes once and save it in a variable that you use in the
print
statements.Output should look like (which is not exactly the same as the actual song's lyrics):
525600 minutes, 525600 moments so dear. 525600 minutes - how do you measure, measure a year?
- (15 pts) MLB Hall of Famers. Rickey Henderson
was voted into the Major League Baseball Hall of Fame in 2009. At
one time Henderson was the career leader in three major offensive
categories: runs, stolen bases, and walks. (Barry Bonds passed
him in walks.)
Henderson stole 1406 bases and was caught 335 times. Lou Brock is second with 938 stolen bases and 307 caught stealing.
Calculate and display Henderson's and Brock's successful base stealing percentages. Then, display the difference in their percentages.
Think about how to model the problem. What are you given? What do you need to represent? Create variables for what you need to model (and think about their data types). What do you need to output?
Note: The calculated numbers are not very pretty when displayed. We'll learn how to format the output more nicely later this term.
Finishing up: What to turn in for this lab
You should be in the terminal
(not the Python shell) to execute the following commands. You should
be in your cs111/
directory.
- If you're not already, go into your
cs111
directory. Create the printable file of your lab using the command:
createPrintableLab <labname>
In this case, the lab name islab1
.Putting it all together, the command you should execute is
createPrintableLab lab1The script
createPrintableLab
creates a condensed version of your lab in a postscript file calledlab1.ps
and then converts the file to pdf inlab1.pdf
. To save paper, the script puts two pages on a piece of paper. The script also highlights the Python code appropriately.View the compiled printout using the command evince lab1.ps &
evince
allows you to view postscript files, which are suitable for printing. You should verify that the file "looks correct", i.e., no "garbage characters" and that your file is not be more than a few pages. Otherwise, you're printing too much. See the instructor or student assistant if you're having trouble.Review your printout with Professor Sprenkle before moving on. OR, complete the next step and let her know that you have submitted your file so she can check it out.
If you make changes to your files, you should run the scripts to create a printable lab and the turnin script.Cleanup: jEdit and IDLE may make backup files. The backup files have an "~" appended to the name of your file. When printing, if you see any files that end in ~, tell us and we will help you delete the files. Don't worry if you don't have these files.
- Submit your
lab1
directory to yourturnin
directory so that I can see your files by running the command turnin lab1
If everything is set up correctly, you copied yourlab1
directory PLUS the printable lab into yourturnin
directory. If you run the script again, it will create a backup of the previous submission and copy your current directory. - Print out your lab submission. Open up evince again
using evince lab1.ps
Select the print icon and choose to print to
HPLaserJetIntroLab
- Write out and sign the honor pledge on the print out. Staple all pages together.
Labs are due at the beginning of Friday's class. The
electronic version should be in the turnin
directory before 9:40 a.m. on Friday.
Ask well before the deadline if you need help turning in your assignment!
Grading (75 pts)
- Using IDLE: 15 pts
- Python programs: 60 pts