Title here - University of Glasgow
Download
Report
Transcript Title here - University of Glasgow
Accelerated Programming 2
Part I: Python Programming
3
Basics
© 2010 David A Watt, University of Glasgow
Data types (1)
Programs input, store, manipulate, and output
values or data.
Values are classified according to their types
and the operations that can be performed on
them. E.g.:
– It makes sense to subtract numbers but not booleans or
strings.
– It makes sense to concatenate strings but not subtract
them.
3-2
Data types (2)
Basic data types in Python:
– integer numbers
– floating-point numbers
– booleans
– strings.
values
integers
1 2 3 100 …
floats
1.5 3.1416
9.9 …
booleans
False True
strings
‘’ ‘$’
‘Hi’
‘apple’ …
3-3
Data types (3)
Composite data types in Python:
– tuples (§6)
– lists (§7)
– dictionaries (§9).
3-4
Integer numbers
The integer numbers are positive and negative
whole numbers:
…, –3, –2, –1, 0, +1, +2, +3, …
3-5
Integer operators
Integer operators:
-y
negation of y
x+y
sum of x and y
x-y
difference of x and y
x*y
product of x and y
x // y
quotient when x is divided by y
x%y
remainder when x is divided by y
x ** y
x raised to the power of y
3-6
Example: integer arithmetic
This function uses integer remainders:
def gcd (m, n):
# Return the greatest common divisor of m and n.
p = m
q = n
r = p % q
# remainder on dividing p by q
while r != 0: # i.e., p is not a multiple of q
p = q
q = r
r = p % q
return q
3-7
Floating-point numbers
The floating-point numbers are positive and
negative real numbers.
Floating-point numbers are represented
approximately in a computer (unlike integers,
booleans, etc.).
3-8
Floating-point operators
Floating-point operators:
-y
negation of y
x+y
sum of x and y
x-y
difference of x and y
x*y
product of x and y
x/y
division of x by y
x ** y
x raised to the power of y
3-9
Example: floating-point arithmetic (1)
This function uses floating-point arithmetic:
def square_root (x):
# Return the square root of the positive number x.
r = 1.0
while abs(x/r**2 – 1) > 0.0001:
r = 0.5 * (r + x/r)
return r
This function assumes that its argument is
positive.
– What will happen if its argument is negative?
3-10
Example: floating-point arithmetic (2)
Tracing the function call square_root(2.0):
x
Enter the function:
2.0
Execute “r = 1.0”:
2.0
1.0
2.0
1.0
2.0
1.5
2.0
1.5
2.0
1.4167
2.0
1.4167
Test “abs(…) > 0.0001”:
yields True
Execute “r = 0.5*(r+x/r)”:
Test “abs(…) > 0.0001”:
yields True
Execute “r = 0.5*(r+x/r)”:
Test “abs(…) > 0.0001”:
yields True
r
3-11
Example: floating-point arithmetic (3)
Tracing the function call (continued):
Execute “r = 0.5*(r+x/r)”:
x
r
2.0
1.4167
Test “abs(…) > 0.0001”:
yields False
2.0
1.4142
Execute “return r”:
returns 1.4142
2.0
1.4142
3-12
Floating-point approximation
Floating-point numbers are represented in the
form:
± m x 2±e
where the mantissa m is a binary fraction (½ ≤ m < 1)
and the exponent e is a small binary integer.
Most real numbers (including all irrational
numbers) can only be approximated in a
computer.
It follows that floating-point computations are
only approximate – beware!
3-13
Example: floating-point approximation
Consider the expression:
1.0 + 0.2 – 1.0
On my computer, this expression yields
1.19999999999999996!
The problem is that the number 0.2, although it
can be written exactly as a decimal fraction,
cannot be represented exactly as a binary
fraction.
3-14
Boolean values and operators
The boolean values are False and True.
Boolean operators:
not y
negation of y
(i.e., True iff y is False)
x and y
conjunction of x and y
(i.e., True iff both x and y are True)
x or y
disjunction of x and y
(i.e., True iff either x or y is True)
3-15
Comparison operators
Comparison operators:
x == y
True iff x is equal to y
x != y
True iff x is unequal to y
x<y
True iff x is less than y
x <= y
True iff x is less than or equal to y
x>y
True iff x is greater than y
x >= y
True iff x is greater than or equal to y
Comparison chaining:
x<y<z
True iff x is less than y and y is less than z
etc.
3-16
Example: booleans
Using boolean and comparison operations:
def in_range (n, p, q):
# Return True iff n is in the range p … q.
return (p <= n and n <= q)
Alternatively, using comparison chaining:
def in_range (n, p, q):
# Return True iff n is in the range p … q.
return (p <= n <= q)
Function call:
d = input('Enter integer in range 0-9: ')
if not in_range(d, 0, 9):
print 'Invalid integer'
3-17
String values
A string is a sequence of characters.
The length of a string is the number of
characters in it.
The empty string has length 0 (i.e., it consists of
no characters at all).
The string values are character sequences of
any length.
3-18
String operators
String operators:
s+t
concatenation of strings s and t
n*s
concatenation of n copies of s
s*n
ditto
3-19
String comparison operators
String comparison operators:
s == t
True iff s is equal to t
s != t
True iff s is unequal to t
s<t
True iff s is lexicographically less than t
s <= t
True iff s is lexicographically less than
or equal to t
s>t
True iff s is lexicographically greater than t
s >= t
True iff s is lexicographically greater than
or equal to t
Comparison chaining: as before.
3-20
Example: string operations
Program:
place = 'Paris'
season = 'spring'
title = place + ' in ' + 2*'the ' + season
print title
Output:
Paris in the the spring
3-21
Example: string comparisons (1)
Program:
word1 = raw_input('Enter a word: ')
word2 = raw_input('Enter another word: ')
if word1 > word2:
# Swap word1 and word2 …
word1, word2 = word2, word1
print 'Words in lexicographic order:'
print word1
print word2
3-22
Example: string comparisons (2)
Program’s output and input:
Enter a word: mouse
Enter another word: elephant
Words in lexicographic order:
elephant
mouse
3-23