Difference between revisions of "CSC111 Lab 2 2015b"
(→Moodle Submission) |
(→Moodle Submission) |
||
Line 289: | Line 289: | ||
=Moodle Submission= | =Moodle Submission= | ||
<br /> | <br /> | ||
− | * Write a program that prompts the user for 2 integer numbers representing a low and a high temperature, expressed in Farhenheit, and outputs all the temperatures in between, with their equivalent Celsius. | + | * Write a program called lab2.py that prompts the user for 2 integer numbers representing a low and a high temperature, expressed in Farhenheit, and outputs all the temperatures in between, with their equivalent Celsius. |
* Below is an example of interaction between the user and her program: | * Below is an example of interaction between the user and her program: |
Revision as of 16:46, 15 September 2015
--D. Thiebaut (talk) 15:59, 11 September 2015 (EDT)
Contents
This lab deals with loops in python. You should work in pairs, with the same partner, or with another partner. Don't hesitate to share insights and help your neighbors during the lab. This is true of all labs. Homework assignments have to be done as a pair, but for the labs, you are free to talk to others in the classroom.
Definite for-loops
Loops that use the range() function
- For this section of the lab, open IDLE and create the different program sections below in the Python shell window.
>>> for n in range( 4 ): print( n ) >>> for n in range( 1, 4 ): print( n ) >>> for n in range( -1, 4 ): print( n ) >>> for n in range( 5, 10 ): print( n ) >>> for n in range( 0, 10, 2 ): print( n ) >>> for n in range( 1, 10, 2 ): print( n ) >>> for n in range( 10, 0, -2 ): print( n )
- Do you understand how the range() function works?
- If you give it only 1 number, it will generate a series of numbers starting at 0 and going up to that number, but not including it, in steps of 1.
- If you give it 2 numbers, it will use the first one as the start, and the second at the stop, and will generate all the integers between the two, in steps of 1. The stop number is never used.
- IF you give it 3 numbers, the 3rd one is the step. It can be positive or negative.
Challenge #1: Range-Controlled Loops |
Now, your turn:
- List of even numbers
- write a loop that prints all the even numbers between 4 and 20; 4, and 20 included.
- List of odd numbers
- write a loop that prints all the odd numbers between -3 and 19, -3, and 19 included.
- List odd numbers in reverse order
- write a loop that prints all the odd numbers starting at 9 and going down to 1, included.
Definite For-Loops that use Lists
- We can use explicit lists to generate similar outputs. For example, the output of the first two examples in the previous section could have been generated by the following loops:
>>>for n in [0, 1, 2, 3]: print( n ) >>>for n in [1, 2, 3]: print( n )
Challenge #2: List-Controlled Loops |
Solve the 3 problems of Challenge 1 above, using lists instead of the range() function.
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 # # print the contents of the farm for animal in [ "dog", "cat", "horse" ]: print animal
- Add a pig to your list of animals, and make sure it gets listed by the program.
- Modification #1
- Change the for-loop of your program so that it reads:
counter = 0
for animal in [ "dog", "cat", "horse", "pig" ]:
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):
Your farm 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 most 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:
# display the names of the animals for animal in [ "horse", "pig", "dog", "cat" ]: print animal
Challenge #3: Output Song Lyrics |
- Modify the program above so that it uses the loop, and outputs 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)
The input() Function
Try the following statements in the console window. Again, some of these might generate errors. It is important for you to understand why these errors occur.
>>> firstName = input( "Enter your first name: " )
>>> firstName
>>> lastName = input( "Enter your last name: " )
>>> lastName
>>> print( firstName, lastName )
>>> x = input( "enter a number: " )
>>> x
>>> x + 5
>>> x = input( "Enter a number: " )
>>> x
>>> x = eval( answer )
>>> x
>>> x + 5
>>> y = eval( "314.56789" )
>>> y
Challenge #4: Gathering student information |
Write a python program that asks the user for her name, box number, 99-Id number, and phone number, and that outputs it back on the screen nicely formatted.
Example (the information entered by the user is in boldface):
your first name? Allie your last name? Gator your box number? 1234 your phone number? 413 456 7890 your Smith Id? 990123456 Name: Allie Gator (990123456) box #: 1234 phone: 413 456 7890
Challenge #5: Printing the student information it in a (half) box |
- Same idea as with the previous challenge but after inputing the information from the user, the program outputs it in a half-box!
Example (user input in in boldface):
your first name? Mickey your last name? Mouse your box number? 1234 your phone number? 413 456 7890 your Id number? 990111222 +--------------------------------------- | Name: Mickey Mouse ( 990111222 ) | Box: 1234 | Phone: 413 456 7890 +---------------------------------------
- The length of the bars is unimportant.
Challenge #6: Temperature Converter |
- Write a program that prompts the user for a temperature expressed in Fahrenheit, and outputs the equivalent temperature in Celsius.
- The equation for temperature conversion is: Celsius = ( Fahrenheit -32 ) * 5 / 9
- Here is an example of the way your program will work (the user input is in boldface):
Please enter temperature in Fahrenheit: 12 12 degrees Fahrenheit is -11.11111111111111 Celsius.
- (We will not worry about the extra length of the Celsius number for this lab.)
Moodle Submission
- Write a program called lab2.py that prompts the user for 2 integer numbers representing a low and a high temperature, expressed in Farhenheit, and outputs all the temperatures in between, with their equivalent Celsius.
- Below is an example of interaction between the user and her program:
Enter low temperature: 20 Enter high temperature: 40 Fahrenheit Celsius 20 -6.66666666667 21 -6.11111111111 22 -5.55555555556 23 -5.0 24 -4.44444444444 25 -3.88888888889 26 -3.33333333333 27 -2.77777777778 28 -2.22222222222 29 -1.66666666667 30 -1.11111111111 31 -0.555555555556 32 0.0 33 0.555555555556 34 1.11111111111 35 1.66666666667 36 2.22222222222 37 2.77777777778 38 3.33333333333 39 3.88888888889 40 4.44444444444
- Note: The space between the temperatures printed on the same line can be created by a simple string of 7 spaces.
- Submit your program to Moodle, in the Lab 2 section. You have until Friday 9/18 evening to finish this program.
<showafterdate after="20150207 00:00" before="20150601 00:00">
Solution Programs
# lab2.py
# D. Thiebaut
# The program prompts the user for 2 integer temperatures
# and outputs a table of all temperatures ranging between the
# two values, last value included.
temp1 = eval( input( "Enter low temperature: " ) )
temp2 = eval( input( "Enter high temperature: " ) )
print()
print( "Fahrenheit Celsius" )
for temp in range( temp1, temp2+1 ):
print( temp, " ", (temp-32)*5/9 )
</showafterdate>