Download presentation
Presentation is loading. Please wait.
Published byGrace Cunningham Modified over 9 years ago
1
PYTHON CONDITIONALS AND RECURSION : CHAPTER 5 FROM THINK PYTHON HOW TO THINK LIKE A COMPUTER SCIENTIST
2
BOOLEAN EXPRESSION A Boolean expression is an expression that results in either a True or False. We can test these in easily. For example >>> 5 == 2 #note the double == is used to test for equality False >>> 5 == 5 # Note that 5=5(or x=5) is really bad!! True # Other relational operators include x != yx yx>=y All of these return a True or False Note that True and False are NOT strings
3
LOGICAL OPERATORS There are three logical operators, and, or and not These are used as we do in English >>> True and True True >>> True and False if both true return true else false # False >>> True or False # if either is true return true True >>> not True True >>> True and not False True
4
FURTHER EXAMPLES >>> x=10 >>> y = 0 >>> x>5 and y == 0 True >>> x != 10 or not y == 3 True >>> x>5 and x<=20 # returns True if x is between 5 and 20 True >>> x%2==0 or x%3==0 # divisible by 2 or by 3 return True True
5
CONDITIONAL EXECUTION The first instruction that we will look at that uses conditions is the if statement. Here is the syntax if : statement more_statements # an example if x!=0: y = 20.0/x #makes sure the we are not dividing by 0 print y Execute these instruction only if Is True. Four space Indention is required!
6
ALTERNATIVE EXAMPLE if : Instruction to execute if is True else: Instructions to execute if is False # Example if (x>0): print ‘x is positive’ else: print ‘x is less than or equal to zero’
7
CHAINED CONDITIONALS If x<y: print ‘x is less than y’ elif x>y: print ‘x is greater than y’ else: print ‘x is equal to y’ #You can chain as many of these elif’s as you want # Lets do an example with grades
8
DETERMINE A LETTER GRADE FROM A NUMBER grade= ? #Assign some value here if grade>=90: print ‘I made an A’ #Note: As soon as a true is found elif grade>=80: # the remainder is skipped!! print ‘I made a B’ elif grade>=70: print ‘I made a C’ else: print ‘I better get to studying’
9
WE CAN ALSO PUT AN IF WITHIN AN IF Suppose we want to see if a is greater than b and c if a>b : if b>c: print a, ‘is the largest’ else: if a>c: print a, ‘is the largest’ else: print a, ‘is not the largest’ else: print a, ‘ is not the largest’ Note: This is a contrived example. There is a much easier way to do this! Think about using the and operator!!
10
KEYBOARD INPUT HTTP://DOCS.PYTHON.ORG/2/LIBRARY/FUNCTIONS.HTML Before we look at more if-else examples we need to see how to get input (keyboard) from the person running the python program. raw_input([prompt]) If the prompt argument is present, it is written to screen without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.EOFError Example: x = raw_input(‘Enter a number:’) Prompt A string
11
OK, LOOK AT THIS >>> x = raw_input('Enter a number:') Enter a number:23 >>> x+3 #What will be printed? Traceback (most recent call last): File " ", line 1, in x+3 TypeError: cannot concatenate 'str' and 'int' objects WHY? So what can we do to fix it?
12
CONVERT IT TO AN INTEGER OR FLOAT #method 1 >>> x = raw_input('Enter a number:') Enter a number:12 >>> x=int(x) #convert x to an integer >>> x+4 16 #method 2 >>> x = int(raw_input('Enter a number:'))+4 Enter a number:23 27 What if I typed in 3.45 instead of 12
13
HERE IS WHAT HAPPENS >>> x = raw_input('Enter a number:') Enter a number:3.45 >>> int(x) Traceback (most recent call last): File " ", line 1, in int(x) ValueError: invalid literal for int() with base 10: '3.45' Note: float(x) will work!
14
SOME PROBLEMS TO CONTEMPLATE a=float(raw_input(‘Enter a:’)) b=float(raw_input(‘Enter b:’)) c=float(raw_input(‘Enter c:’)) x=float(raw_input(‘Enter x:’)) y = a*x**2+b*x+c print ‘The answer is’,y Enter a:2 Enter b:3 Enter c:4 Enter x:5 The answer is 69.0 >>>
15
BACK TO TURTLE_WORLD One of the problems we noticed with a random walking turtle was that it often off the screen. Let solve this problem and create a fence that the turtle is kept within. We will start by creating a simple move function from swampy.TurtleWorld import * from random import * #Moves turtle to new location #without modifing its heading def MoveTo(t,x,y): “”” t is the turtle, and x,y is the location we want to move to””” t.x=x t.y=y
16
DRAW THE FENCE #Draws the electric fence #with a different turtle and then removes it def DrawFence(s): “”” s is the width of the square fence “”” t=Turtle() # Create a turtle to draw the fence t.delay=.001 #Draw it real fast set_pen_color(t, 'blue') MoveTo(t,-s/2,s/2) # Go to upper left hand corner of the fence for i in range(4): fd(t,s) rt(t,90) die(t) s (0,0)
17
REMEMBER HEADINGS
18
BOUNCE OFF FENCE #Changes the heading if the turtle tries to #move outside the fence. w is the width of the fence def Bounce_off_fence(t,w): b=w/2-3 if t.x>b: #going off t.x =b t.heading=180 if t.x <-b: #going off t.x=-b t.heading=0 if t.y>b: #going off top t.y=b t.heading=270 if t.y<-b: #going off bottom t.y=-b t.heading=90 (0,0) 0 90 180 270 headings b
19
THE MAIN PROGRAM RUN TURTLE AROUND IN FENCE world = TurtleWorld() fenceSize=200 DrawFence(fenceSize) bob = Turtle() set_color(bob, 'red') bob.delay=.01 pu(bob) #Turn off the drawing of the path for i in range(1000): # Take 1000 random steps Bounce_off_fence(bob,fenceSize) #remember, this changes its heading fd( bob,3) # the following creates a random number from -45 to +45 # It is used to create the directional wandering movement we see angle = random()*90-45 rt(bob,angle) wait_for_user()
20
HOMEWORK Rewrite the turtle-fence program so that the fence is now a circle that the turtle must stay inside of. 1.You first need to modify the DrawFence(s) to draw a circle of radius r 2.When is above is working modify Bounce_off_fence(t,r) to work with the circle. HINT: remember the distance formula you learned in algebra? Might need http://www.mathsisfun.com/polar-cartesian-coordinates.html 3. The remainder of the code aught to work as is.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.