Difference between revisions of "CSC111 Lab 4 2014"

From dftwiki3
Jump to: navigation, search
(Exercise 4: Using PythonTutor)
(Exercise 4: Using PythonTutor)
Line 98: Line 98:
  
 
<br />
 
<br />
* Enter the program above in the code window, select Python 3, and click on '''Visualize''', as illustrated below.
+
* Enter the program above in the code window, select Python 3, and click on '''Visualize''', as illustrated below.  The image below is just an illustration.  You should be working in another window or tab of your browser.
 
<br />
 
<br />
 
<center>[[Image:PythonTutor2.png|600px]]</center>
 
<center>[[Image:PythonTutor2.png|600px]]</center>

Revision as of 09:52, 18 February 2014

--D. Thiebaut (talk) 15:11, 17 February 2014 (EST)





This lab deals with while loops and introduces a new tool: PythonTutor.




Exercise 1

  • Observe the program below
  • Once you have figured out how it works, enter it in Idle and run it. Verify that it runs correctly.


x = input( "enter an integer between 3 and 9: " ) 
while  3 <= x <= 9: 
   print "invalid input!" 
   x = input( "enter an integer between 3 and 9: " ) 

print( "x = ", x )


Challenge 1

QuestionMark3.jpg

Can you add only 5 characters to the program and make it accept only numbers that are less than 3 or greater than 9?








Exercise 2

Write a Python program that asks the user to input the answer to a Yes/No question. The user is allowed to enter 'Y', 'y', 'yes', 'YES' for yes, and 'N', 'n', 'no', 'NO' for no.

Your program will contain a while loop that will force the user to keep entering an answer until it is one of the authorized inputs shown above.

You can use the skeleton program shown below as a starting point. Add different parts to make it robust

#--- ask user question ---
answer = input( "Do you like chocolate (Y/N)? " )
...

#--- keep on asking while invalid ---
while  ...      :
    answer = input( "Please reenter: " )
    ...

#--- now that we know the answer, give feedback ---
if answer == ... :
    print( "That's terrible" )
else:
    print( "That's great!" )





Exercise 3

Write a program that reads a character for playing the game of Rock-Paper-Scissors. If the character entered by the user is not one of 'P', 'R' or 'S', the program keeps on prompting the user to enter a new character.




Exercise 4: Using PythonTutor




PythonTutor1.png


	sum = 0
	num = 1
	while num <= 5:
	    sum = sum + num;
	    num = num + 1
	
	print( "the sum of the numbers from 1 to %d is %d"  % ( 5, sum ) )



  • Enter the program above in the code window, select Python 3, and click on Visualize, as illustrated below. The image below is just an illustration. You should be working in another window or tab of your browser.


PythonTutor2.png


  • In the new window that comes up, click on Forward and observe how the interpreter executes one line at a time and displays how the the variables change. We call this process single-stepping a program. In other word we force the interpreter to go one step (line) at a time.


PythonTutor3.png


This is a great way to observe how small code sections operate!


  • Single-step the whole program to see that it works correctly.


Challenge 2

QuestionMark4.jpg


The program below is supposed to compute the sum of all the even numbers such that their sum is less than or equal to 20. Use PythonTutor to figure out the bug!

# buggy program that is supposed to compute
# the sum of even numbers and stop as soon as
# the sum is greater than or equal to 20.  Your
# job is to fix the program using PythonTutor.

sum = 0
num = 0

while sum < 20:
    sum = sum + num
    num = num + 2

print( "the sum of the even numbers from 0 to %d is %d\n"
       % ( num, sum ) )


Exercise 4: Sentinels

  • Type or copy the program below in Idle.
  • Look at it and make sure you think you know how it will work
  • Run the program


print( "please enter positive integers at the prompt.  Enter -1 to stop" )

sum = 0
x   = 0
while x != -1:
    x = int( input( "Enter a positive integer (-1 to stop): " ) )
    if x != -1:
        sum = sum + x

print( "The sum of the numbers you entered is", sum )



Challenge 2

QuestionMark1.jpg


Modify the program above so that it stops when the sum of the numbers is greater than 20.




Challenge 3

QuestionMark1.jpg


Modify the program so that this time the program outputs the number of positive integers entered.

Exercise 5:


Write a Python program that reads strings of characters until it finds the string "THE END.", in which case it stops. The program will count how many times the word "mother" appears in all the strings entered.

Demo: count the number of times the words "Amherst" or "women" appear in Emily Dickinson's poems
Exercise 5
Write a program that asks the user for three pieces of information: a starting balance, a target balance, and an interest rate (entered as 0.05 for 5%, for example). The program then outputs the number of investment periods required for the starting balance to have grown larger than the target balance. While this can be computed directly mathematically, we want for this exercise to use a while loop to figure out the answer.
The answer should just be a line stating something like: "To grow an initial investment of $1000 to $2000 at 4.5% will require