Professional Documents
Culture Documents
An Introduction To Python For Absolute Beginners
An Introduction To Python For Absolute Beginners
An Introduction To Python For Absolute Beginners
http://www.ucs.cam.ac.uk/docs/course-notes/unix-courses/PythonAB
1
Our first “real” program
$ python3 sqrt.py We have to write sqrt.py
Number? 2.0
1.414213562373095
2
Square root of 2.0 by “bisection”
0.0 too small for √2
“Interval of uncertainty”
1.0**2
1.0
Mid-point: 1.0
4
Square root of 2.0 by bisection — 2
2 2
midpoint < 2
1.5**2
2.25
Mid-point: 1.5
6
Square root of 2.0 by bisection —
4
1.5**2 > 2.0
1.25**2
1.5625
Mid-point: 1.25
8
Square root of 2.0 by bisection —
6
1.25**2 < 2.0
1.375**2
1.890625
Mid-point: 1.375
10
Square root of 2.0 by bisection —
8
1.375**2 < 2.0
2 minutes
12 1.375 < √2 < 1.5
Understanding before
Programming
13
And now using Python!
lower = 0.0
upper = 2.0
middle = (lower+upper)/2
14
And now using Python — 2
middle**2 < 2.0
True
lower = middle
print(lower, upper)
1.0 2.0
15
And now using Python — 3
middle = (lower+upper)/2
print(middle, middle**2)
1.5 2.25
16
And now using Python — 4
middle**2 < 2.0
False
upper = middle
print(lower, upper)
1.0 1.5
17
And now using Python — 5
middle = (lower+upper)/2
print(middle, middle**2)
1.25 1.5625
18
And now using Python — 6
middle**2 < 2.0
True
lower = middle
print(lower, upper)
1.25 1.5
19
And now using Python — 7
middle = (lower+upper)/2
print(middle, middle**2)
1.375 1.890625
20
And now using Python — 8
middle**2 < 2.0
True
lower = middle
print(lower, upper)
1.375 1.5
21
Looking at the Python code
lower = 0.0
upper = 2.0
middle = (lower+upper)/2
print(middle, middle**2)
✔ ? ✘
lower = middle upper = middle
print(lower, upper)
22
Looking at the Python structures
lower = 0.0 Set up
upper = 2.0
Loop
middle = (lower+upper)/2
print(middle, middle**2)
Choice
middle**2 < 2.0
✔ ? ✘
lower = middle upper = middle
print(lower, upper)
23
Looping
Before
What is
Loop body run each
loop?
After
24
Loop example: Count from 1 to 10
Before number = 1
✘ ✔ ✘ ✔
print(number)
Loop body number += 1
After print('Done!')
25
Loop example: Count from 1 to 10
number = 1 number = 1
✘ ✔
print('Done!') print('Done!')
26
Loop test: Count from 1 to 10
number = 1
“while” keyword
loop test
while number <= 10 : colon
␣␣␣␣ print(number)
␣␣␣␣ number += 1
print('Done!')
27
Loop body: Count from 1 to 10
number = 1 To kill a running script: Ctrl + C
␣␣␣␣ print(number)
loop body
␣␣␣␣ number += 1
indentation
print('Done!')
28
Loop example: Count from 1 to 10
$ python3 while1.py
number = 1
1
while number <= 10 : 2
3
print(number)
4
number += 1
5
6
print('Done!') 7
8
9
while1.py 10
Done!
$
29
Python’s use of indentation
number = 1
1
1(a)
1(b)
1(b)(i)
1(b)(ii)
1(b)(iii)
1(c)
2
3
31
Other languages
Shell while ...
do do ... done Syntax
␣␣␣␣...
␣␣␣␣... ␣␣␣␣... Clarity
done
C while ...
{ { ... } Syntax
␣␣␣␣...
␣␣␣␣... ␣␣␣␣... Clarity
}
32
Progress
while ... : before
while test :
test to keep looping ␣␣␣␣action1
␣␣␣␣ action2
␣␣␣␣ action3
code blocks
afterwards
␣␣␣␣indentation
33
Back to our square root example
uncertainty tolerance
0.0 2.0
2.0 1.0×10–15
1.0 2.0
1.0
What we want
1.0 1.5
0.5
1.25 1.5
0.25
1.375 1.5
0.125 What we get
34
Keep looping while … ?
uncertainty > tolerance
35
Square root: the loop
tolerance = 1.0e-15 Set up
lower = 0.0
upper = 2.0
uncertainty = upper - lower
Loop
while uncertainty > tolerance :
print(lower, upper)
36 uncertainty = upper - lower
Choosing
Choice
middle**2 < 2.0
✔ ? ✘
lower = middle upper = middle
38
if…then… else… ― 1
if keyword
Test
if number % 2 == 0 : Colon
else :
39
if…then… else… ― 2
if number % 2 == 0 :
40
if…then… else… ― 3
if number % 2 == 0 :
print('Even number')
␣␣␣␣
41
if…then… else… ― 4
if number % 2 == 0 :
else :
42
Our square root example
middle = (lower + upper)/2 Before
if… block
else :
43
Progress
if ... : before
else: if test :
␣␣␣␣action1
␣␣␣␣action2
choice of two else:
code blocks ␣␣␣␣action3
afterwards
␣␣␣␣indentation
44
Back to our example
tolerance = 1.0e-15
lower = 0.0
upper = 2.0
uncertainty = upper - lower
48
sqrt1.py
☺
Script for the square root of 2.0
tolerance = 1.0e-15
lower = 0.0
upper = 2.0 √2.0
uncertainty = upper - lower
50
Initial bounds?
lower = ?
upper = ?
if...then...else...
51
Initial bounds
52
Generic square root script?
text = input('Number?␣') User input
number = float(text)
if number < 1.0:
␣␣␣␣lower = number Initialization
␣␣␣␣upper = 1.0
else:
␣␣␣␣lower = 1.0
␣␣␣␣upper = number
tolerance = 1.0e-15
uncertainty = upper - lower
while uncertainty > tolerance:
␣␣␣␣middle = (lower+upper)/2.0
␣␣␣␣if middle**2 < number: Processing
␣␣␣␣␣␣␣␣lower = middle
␣␣␣␣else:
␣␣␣␣␣␣␣␣upper = middle
␣␣␣␣uncertainty = upper - lower
print(lower, upper)
53
Output sqrt2.py
Negative numbers?
Need to catch negative numbers
"else" is optional
54
“Chained” tests
text = input('Number?␣')
User input
number = float(text)
...
55
“Chained” tests ― syntactic sugar
text = input('Number?␣')
number = float(text)
...
56 sqrt3.py
Without elif…
text = input('Number?␣')
number = float(text)
Stacked
57 clauses get unwieldy
With elif…
text = input('Number?␣')
number = float(text)
58
Progress
Nested structures while … :
if … :
Chained tests if … :
…
elif … :
…
Testing inputs to scripts elif … :
…
else:
…
59
exit()
Exercise 9
Only attempt each part after exercise9.py
you have the previous part working!
10 minutes
60
Comments
We have written our first real Python script
61
Python comment character
The “hash” character
62
Python commenting example
# Script to calculate square roots by bisection
# (c) Bob Dowling 2012. Licensed under GPL v3.0
text = input('Number?␣')
number = float(text) # Need a real number
Comments
“#” character
64
Exercise 10
Comment your square root script from exercise 9.
2 minutes
65