CSC111 Lab 3 2011
--D. Thiebaut 18:15, 21 September 2011 (EDT)
Contents
This lab deals with loops in python. Feel free to work in pairs, share insights and help your neighbors during the lab.
Printing programs from Linux
If you want to print your programs directly from your account on Beowulf to the printer in FH243 (next door to the lab), you need to use the cprint command. Here is how you would print a file called programname.py.
- Get the list of the printers
cprint -l (that's minus-ell) print lp queue location ----- -------- -------- 1 mc104 McConnell 104 2 fh243 Ford Hall 243 3 eng_203 Engineering 203 4 eng_203_color Engineering 203 Color
- Note that the printer in FH243 is on the line starting with 2
- Print to Printer #2
cprint -2 programname.py
- and your listing will available at the black and white printer in FH243. Use different numbers to print to different printers, depending on which one is closest to you.
Single for-loops
- Start your computer in either Mac OS or Windows mode.
- For this section of the lab, open two ssh (secure shell) windows, edit your Python program in one of them and run it in the other.
- Create a new program called lab2.py
# lab2.py def main(): for i in range( 3, 8 ): print( i ) main()
- Verify that you get the correct output:
python lab2.py 3 4 5 6 7
Mini Challenges |
- Now, your turn!
- List of numbers, Version 2
- Modify your loop so that it does not use the range( ) function (Hint: you have to list all the values)
- List of even numbers
- write a loop that prints all the even numbers between 4 and 20, 4, and 20 included (you can use range or list all the numbers).
- List of odd numbers
- write a loop that prints all the odd numbers between -3 and 19, -3, and 19 included.
- User-controlled loops (more difficult)
- Write a new Python program that prints a series of numbers, after having asked the user where the series should start, and where it should end.
- Here is an example of how it should run (the user input is underlined):
python3 userLoop.py I will print a list of numbers for you. Where should I start? 3 What is the last number of the series? 10 3 4 5 6 7 8 9 10
- Go ahead and write it. What happens if you ask the program to count from -5 to 5? Does it work correctly?
- Does your program work if you ask your program to go from 1 to 1?
- Can you predict what will be printed if you ask your program to count from 10 to 1?
Lists and Operations on Lists
- Try the following Python statements in the Python shell (interactive mode).
>>> students = [ "alice", "kate", "renee"] >>> students >>> students.append( "monique" ) >>> students >>> students = [] >>> students >>> students = [ "alice", "jack" ] + [ "monique", "chris", "andrea" ] >>> students >>> students[ 0 ] >>> students[ 1 ] >>> students[ -1 ] >>> students[ -2 ] (try to figure out how negative indices work)
For-Loops ready for modification
- Create the following python program (we're not working in interactive mode at this point). Don't hesitate to copy and paste to go faster!
# lab2seq.py # # initialize the farm with animals farm = [ "dog", "cat", "horse" ] # print the contents of the farm for animal in farm: print( animal )
- Farm and animal are variables. One contains a list, the other one contains a string.
- Add a pig to your farm, and make sure it gets listed by the program.
- When you are done with the addition of the pig, observe another way for the program to do the same thing:
# lab2seq2.py # farm = [] # create an empty farm farm.append( "dog" ) # add a dog to it farm.append( "cat" ) # then a cat farm.append( "horse" ) # then a horse farm.append( "pig" ) # and a pig # print the contents of the farm for animal in farm: print( animal )
Challenges #2 |
- Modification
- Edit this second program so that instead of always adding the same animals to the farm, it will get four names of animals from the user, and add them to the farm. It will then print the contents of the farm on the screen. (Hint: use raw_input)
Challenges #3 |
- Modification #2
- Change the for-loop of your program so that it reads:
counter = 0 for animal in farm: print( counter, animal ) counter = counter + 1
- Run the program. Observe its output. From this observation, modify the program so that its output now reads something like this (user input is in underlined):
python lab2seq3.py animal? sheep animal? dog animal? bear animal? mouse Your farm now contains animal #1 : a sheep animal #2 : a dog animal #3 : a bear animal #4 : a mouse
Old MacDonald's Farm
Old MacDonald's farm is a song (almost) all American kids learn at one point in their life. I certainly never heard it when I grew up in France, but I think most of you will be familiar with it.
If you don't know it, this YouTube video will get you acquainted with it. :-)
The goal of this problem is for you to add a section to the program below so that it prints parts of the lyrics of the famous song using a for-loop.
Here's the beginning program which you have to modify:
def main(): # start with four animals in the farm farm = [ "horse", "pig", "dog", "cat" ] # display the names of the animals for animal in farm: print( animal ) main()
Challenges #4 |
- Modify this program so that the output looks like the lyrics of the song:
Old MacDonald had a farm, E-I-E-I-O And on his farm he had a horse, E-I-E-I-O Here a horse, there a horse, everywhere a horse! Old MacDonald had a farm, E-I-E-I-O And on his farm he had a pig, E-I-E-I-O Here a pig, there a pig, everywhere a pig! Old MacDonald had a farm, E-I-E-I-O And on his farm he had a dog, E-I-E-I-O Here a dog, there a dog, everywhere a dog! Old MacDonald had a farm, E-I-E-I-O And on his farm he had a cat, E-I-E-I-O Here a cat, there a cat, everywhere a cat!
(don't worry if you get extra spaces in your output)
Challenges #5 |
- Modify your program some more, and make it prompt the user for the names of four animals first, and then make it display the lyrics as shown above with the user's selected animals.
You are now ready for Homework #2