0% found this document useful (0 votes)
23 views31 pages

03 Python - Conditional Execution

Uploaded by

hariom_jadav
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views31 pages

03 Python - Conditional Execution

Uploaded by

hariom_jadav
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Conditional Execution

Python for Informatics: Exploring Information


[Link]
reachus@[Link]
x=5
Conditional Steps
Yes
X < 10 ? Program:

No print ('Smaller') x=5 Output:


if x < 10:
print ('Smaller’) Smaller
Yes
X > 20 ? Finis
if x > 20:
No print ('Bigger') print ('Bigger')

print ('Finis') print ('Finis')

reachus@[Link]
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
[Link]
reachus@[Link]
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@[Link]
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@[Link]
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)

• Reduce indent back to the level of the if statement or for statement to


indicate the end of the block

• Blank lines are ignored - they do not affect indentation

• Comments on a line by themselves are ignored with regard to indentation

reachus@[Link]
Warning: Turn Off Tabs!!
• Most text editors can turn tabs into spaces - make sure to enable this feature

> NotePad++: Settings -> Preferences -> Language Menu/Tab Settings

> TextWrangler: TextWrangler -> Preferences -> Editor Defaults

• 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@[Link]
This will save you
much unnecessary
pain.

reachus@[Link]
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@[Link]
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@[Link]
yes
Nested x>1

Decisions no print ('More than one')

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')

print ('All Done')

reachus@[Link]
Two-way
Decisions X=4

• Sometimes we want to no yes


do one thing if a logical x>2
expression is true and
something else if the
print ('Not bigger') print ('Bigger')
expression is false

• It is like a fork in the


road - we must choose
one or the other path print ('All Done')
but not both

reachus@[Link]
Two-way
x=4
using else :
no yes
x>2
x = 4

if x > 2 : print ('Smaller') print ('Bigger')


print ('Bigger')
else :
print ('Smaller')

print ('All done')


print ('All Done')

reachus@[Link]
Two-way
x=4
using else :
no yes
x = 4 x>2

if x > 2 :
print ('Smaller') print ('Bigger')
print ('Bigger')
else :
print ('Smaller')

print ('All done')


print ('All Done')

reachus@[Link]
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')

print ('All Done')

reachus@[Link]
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')

print ('All Done')


reachus@[Link]
Multi-way x=5

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')

print ('All Done')


reachus@[Link]
Multi-way x = 20

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')

print ('All Done')


reachus@[Link]
Multi-way
if x < 2 :
print ('Small')
# No Else elif x < 10 :
x = 5 print ('Medium')
if x < 2 : elif x < 20 :
print ('Small') print ('Big')
elif x < 10 : elif x < 40 :
print ('Medium') print ('Large')
elif x < 100:
print ('All done') print ('Huge')
else :
print ('Ginormous')

reachus@[Link]
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@[Link]
The try / except Structure

• You surround a dangerous section of code with try and except


• If the code in the try works - the except is skipped
• If the code in the try fails - it jumps to the except section

reachus@[Link]
$ cat [Link]
astr = 'Hello Bob' $ python [Link]
istr = int(astr) Traceback (most recent call last):
print ('First', istr) File "[Link]", 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@[Link]
$ cat [Link]
astr = 'Hello Bob' $ python [Link]
istr = int(astr) Traceback (most recent call last):
print 'First', istr File "[Link]", 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@[Link]
Generic
Software Computer
Input
Central
Devices
Processing
Unit
Secondary
Memory

Output Main
Devices Memory

reachus@[Link]
$ cat [Link]
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 [Link]
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@[Link]
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@[Link]
Sample try / except
rawstr = input('Enter a number:')
try:
ival = int(rawstr)
except: $ python [Link]
ival = -1 Enter a number:42
Nice work
if ival > 0 : $ python [Link]
print ('Nice work') Enter a number:forty-two
else: Not a number
print ('Not a number') $

reachus@[Link]
Exercise

Rewrite your pay computation to give the employee


1.5 times the hourly rate for hours worked above 40
hours.

Enter Hours: 45
Enter Rate: 10
Pay: 475.0

475 = 40 * 10 + 5 * 15

reachus@[Link]
Exercise

Rewrite your pay program using try and except so


that your program handles non-numeric input
gracefully.

Enter Hours: 20
Enter Rate: nine
Error, please enter numeric input

Enter Hours: forty


Error, please enter numeric input

reachus@[Link]
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@[Link]
Acknowledgements / Contributions
These slides are Copyright 2010- Charles R. Severance
...
([Link]) of the University of Michigan School of
Information and [Link] 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.

Initial Development: Charles Severance, University of Michigan


School of Information

… Insert new Contributors and Translators here

You might also like