03 Python - Conditional Execution
03 Python - Conditional Execution
reachus@cloudxlab.com
Comparison Operators
• Boolean expressions ask a
question and produce a Yes or Python Meaning
No result which we use to < Less than
control program flow <= Less than or Equal
== Equal to
• Boolean expressions using
>= Greater than or Equal
comparison operators evaluate
to - True / False - Yes / No > Greater than
!= Not equal
• Comparison operators look at
variables but do not change the Remember: “=” is used for assignment.
variables
http://en.wikipedia.org/wiki/George_Boole
reachus@cloudxlab.com
Comparison Operators
x = 5
if x == 5 :
print ('Equals 5')
if x > 4 : Equals 5
print ('Greater than 4')
if x >= 5 : Greater than 4
print ('Greater than or Equals 5') Greater than or Equals 5
if x < 6 : Less than 6
print ('Less than 6')
if x <= 5 : Less than or Equals 5
print ('Less than or Equals 5') Not equal 6
if x != 6 :
print ('Not equal 6')
reachus@cloudxlab.com
One-Way Decisions
Yes
x = 5 X == 5 ?
print ('Before 5')
Before 5
if x == 5 :
Is 5 No print ('Is 5')
print ('Is 5')
print ('Is Still 5') Is Still 5
print ('Third 5') Third 5 print ('Still 5')
print ('Afterwards 5’) Afterwards 5
print ('Before 6’) Before 6 print ('Third 5')
if x == 6 : Afterwards
print ('Is 6') 6
print ('Is Still 6')
print ('Third 6')
print ('Afterwards 6')
reachus@cloudxlab.com
Indentation
• Increase indent indent after an if statement or for statement (after : )
• Maintain indent to indicate the scope of the block (which lines are affected
by the if/for)
reachus@cloudxlab.com
Warning: Turn Off Tabs!!
• Most text editors can turn tabs into spaces - make sure to enable this feature
• Python cares a *lot* about how far a line is indented. If you mix tabs and
spaces, you may get “indentation errors” even if everything looks fine
Please do this now while you are thinking about it so we can all stay sane...
reachus@cloudxlab.com
This will save you
much unnecessary
pain.
reachus@cloudxlab.com
increase / maintain after if or for
decrease to indicate end of block
x = 5
if x > 2 :
print ('Bigger than 2')
print ('Still bigger')
print ('Done with 2')
for i in range(5) :
print (i)
if i > 2 :
print ('Bigger than 2')
print ('Done with i', i)
print ('All Done')
reachus@cloudxlab.com
Think about begin/end blocks
x = 5
if x > 2 :
print ('Bigger than 2')
print ('Still bigger')
print ('Done with 2')
for i in range(5) :
print (i)
if i > 2 :
print ('Bigger than 2')
print ('Done with i', i)
print ('All Done')
reachus@cloudxlab.com
yes
Nested x>1
x = 42
if x > 1 : yes
x < 100
print ('More than one')
if x < 100 :
print ('Less than 100') no
print ('Less than 100')
print ('All done')
reachus@cloudxlab.com
Two-way
Decisions X=4
reachus@cloudxlab.com
Two-way
x=4
using else :
no yes
x>2
x = 4
reachus@cloudxlab.com
Two-way
x=4
using else :
no yes
x = 4 x>2
if x > 2 :
print ('Smaller') print ('Bigger')
print ('Bigger')
else :
print ('Smaller')
reachus@cloudxlab.com
Multi-way
yes
x<2 print ('small')
no
if x < 2 :
yes
print ('small')
elif x < 10 :
x < 10 print ('Medium')
print ('Medium') no
else :
print ('LARGE') print ('LARGE')
print ('All done')
reachus@cloudxlab.com
Multi-way x=0
yes
x<2 print ('small')
x = 0 no
if x < 2 :
yes
print ('small')
elif x < 10 :
x < 10 print ('Medium')
print ('Medium') no
else :
print ('LARGE') print ('LARGE')
print ('All done')
yes
x<2 print ('small')
x = 5 no
if x < 2 :
yes
print ('small')
elif x < 10 : x < 10 print ('Medium')
print ('Medium') no
else :
print ('LARGE') print ('LARGE')
print ('All done')
yes
x<2 print ('small')
x = 20 no
if x < 2 : yes
print ('small') x < 10 print ('Medium')
elif x < 10 :
no
print ('Medium')
else :
print ('LARGE') print ('LARGE')
print ('All done')
reachus@cloudxlab.com
Multi-way Puzzles
Which will never print?
if x < 2 :
print ('Below 2')
if x < 2 : elif x < 20 :
print ('Below 2') print ('Below 20')
elif x >= 2 : elif x < 10 :
print ('Two or more') print ('Below 10')
else : else :
print ('Something else') print ('Something else')
reachus@cloudxlab.com
The try / except Structure
reachus@cloudxlab.com
$ cat notry.py
astr = 'Hello Bob' $ python notry.py
istr = int(astr) Traceback (most recent call last):
print ('First', istr) File "notry.py", line 2, in <module>
astr = '123' istr = int(astr)ValueError: invalid literal
istr = int(astr)
for int() with base 10: 'Hello Bob'
print ('Second', istr)
All
Done
reachus@cloudxlab.com
$ cat notry.py
astr = 'Hello Bob' $ python notry.py
istr = int(astr) Traceback (most recent call last):
print 'First', istr File "notry.py", line 2, in <module>
The astr = '123’ istr = int(astr)ValueError: invalid literal
program istr = int(astr)
for int() with base 10: 'Hello Bob'
stops print 'Second', istr
here
All
Done
reachus@cloudxlab.com
Generic
Software Computer
Input
Central
Devices
Processing
Unit
Secondary
Memory
Output Main
Devices Memory
reachus@cloudxlab.com
$ cat tryexcept.py
When the first conversion fails - it
astr = 'Hello Bob'
just drops into the except: clause
try:
and the program continues.
istr = int(astr)
except:
istr = -1
$ python tryexcept.py
print ('First', istr)
First -1
Second 123
astr = '123'
try:
istr = int(astr)
except: When the second conversion
istr = -1 succeeds - it just skips the except:
clause and the program continues.
print ('Second', istr)
reachus@cloudxlab.com
try / except astr = 'Bob'
print ('Hello')
astr = 'Bob'
try: istr = int(astr)
print ('Hello')
istr = int(astr)
print ('There') print ('There')
except:
istr = -1
istr = -1
print ('Done', istr)
print ('Done', istr) Safety net
reachus@cloudxlab.com
Sample try / except
rawstr = input('Enter a number:')
try:
ival = int(rawstr)
except: $ python trynum.py
ival = -1 Enter a number:42
Nice work
if ival > 0 : $ python trynum.py
print ('Nice work') Enter a number:forty-two
else: Not a number
print ('Not a number') $
reachus@cloudxlab.com
Exercise
Enter Hours: 45
Enter Rate: 10
Pay: 475.0
475 = 40 * 10 + 5 * 15
reachus@cloudxlab.com
Exercise
Enter Hours: 20
Enter Rate: nine
Error, please enter numeric input
reachus@cloudxlab.com
Summary
• Comparison operators • Nested Decisions
== <= >= > < ! =
• Multi-way decisions using
• Logical operators: and or not elif
• Indentation • try / except to compensate
for errors
• One-way Decisions
• Short circuit evaluations
• Two-way decisions:
if: and else:
reachus@cloudxlab.com
Acknowledgements / Contributions
These slides are Copyright 2010- Charles R. Severance
...
(www.dr-chuck.com) of the University of Michigan School of
Information and open.umich.edu and made available under a
Creative Commons Attribution 4.0 License. Please maintain this
last slide in all copies of the document to comply with the
attribution requirements of the license. If you make a change,
feel free to add your name and organization to the list of
contributors on this page as you republish the materials.