Skip to main content.

Lab 1: Python Programming and Numeric Operations

Goals

After the lab, you should know how to

  1. create a Python program, run it, create output files, print, and submit it
  2. solve simple arithmetic problems in Python

Objective: Preparing for Lab

  1. Review your Linux notes from last week.
  2. If there were any issues with your web page, go back and fix them first.
  3. Objective: Set up for Lab 1

    1. Run runHelpClient & to help us know who to help next.

      Recall: what does the & allow you to do?

    2. Create a directory called lab1 in your cs111 directory. Your programs and the output for this lab will all be saved in the lab1 directory.
    3. Copy the files from the /csdept/courses/cs111/handouts/lab1/ directory that end in .py into your lab1 directory.

    Objective: Introduction to the Python Interpreter (15 points)

    On our system, you have two options for writing Python programs:

    1. write your programs in jEdit and use the terminal to run Python. This is what I will tend to do in class.

      OR

    2. 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 idle3 &

    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:

    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).

    Using the Interpreter in Batch Mode

    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".

    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.4.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.

    1. (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.
      1. Create three variables (i, j, and result) 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 it is correct. Consider if you were the user of the program and make the program display appropriate output. Put the answer/output in a comment.
      2. Change the name of the variable i to i21. Be sure to change the name everywhere the variable is used. Execute it to verify it still works.
      3. 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.
      4. Revert your program back to a correct variable name.
      5. Make sure that a user looking at your program's execution would understand what the program is doing.

      You only need to save the output from executing the final version of your program.

    2. (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 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:

      525600 minutes, 525600 moments so dear.
      525600 minutes - how do you measure, measure a year? 
      
    3. (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. (Hint: Divide the number of bases successfully stolen by the number of attempts.) Then, display the difference in their percentages.

      Note: The output is not very pretty yet. We'll learn how to format the output more nicely later this term.

    4. (10 pts) Create a program that converts a given Fahrenheit temperature to Celsius. The formula to convert is C=5/9(F-32). Note that you cannot use this formula exactly in your program.

      Output should look similar to:

      This program prints the Celsius temperature
      given a Fahrenheit temperature.
      
      70 degrees F is 21.111111111111111 degrees C
      

      Run the program several times, changing your variable for Fahrenheit, and show the output.

      Note: When you demonstrate this program, especially think about what are good test cases for this program. What answers do you know?

    Finishing up: What to turn in for this lab

    You should be in the terminal to execute the following commands. You should be in your cs111/ directory.

    1. Submit your lab1 directory to your turnin directory by running the command turnin.sh lab1
      If everything is set up correctly, you copied your lab1 directory into your turnin directory. If you run the script again, it will copy your current directory and create a backup of the previous submission.
    2. Cleanup: jEdit and IDLE may make backup files. The backup files have an "~" appended to the name of your file. Delete any "~" files from your lab directory. (What is the UNIX command that you can use to delete all of them at once? Use carefully!) Don't worry if you don't have these files.
    3. 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 is lab1.

      Putting it all together, the command you should execute is
      createPrintableLab lab1

      The script createPrintableLab creates a condensed version of your lab in a postscript file called lab1.ps. To save paper, the script puts two pages on a piece of paper. The script also highlights the Python code appropriately.

    4. View your 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.
    5. The syntax of the command to print the assignment is lpr -P<printername> <filetoprint>
      The printer name is cslab when you're in P405 or advlab if you're in P413.
      The command lpr means to print the file. The option 'P' says which printer to use (one of the CS lab printers), and the argument says which file to print--in this case lab1.ps.

      For example, the command to print this lab, assuming that you're in your cs111 directory and you're in the regular classroom (P405), is
      lpr -Pcslab lab1.ps

    6. Review the print out with Professor Sprenkle or one of the student assistants before submitting.

    Print out your lab and turn that in by Friday. Write out the Honor Pledge and sign your lab. Staple all pages together and print your name at the top of the first page.

    Labs are due at the beginning of Friday's class. You should hand in the printed copy before the beginning of class, and the electronic version should be in the turnin directory before 1:30 p.m. on Friday.

    Ask well before the deadline if you need help turning in your assignment!

    Grading (85 pts)