EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University
-
Upload
jerome-miller -
Category
Documents
-
view
223 -
download
0
description
Transcript of EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University
EECS 110: Lec 3: Data
Aleksandar KuzmanovicNorthwestern University
http://cs.northwestern.edu/~akuzma/classes/EECS110-s09/
If statements (1)
2
name = raw_input('Hi... what is your name? ')
if name == 'Ionut': # is it Ionut? print 'x1' else: # in all other cases... print 'x2'
print 'x3'
If statements (2)
3
name = raw_input('Hi... what is your name? ')
if name == 'Ionut‘: print 'x1' else: print 'x2'
print 'x3'
If statements (3)
4
name = raw_input('Hi... what is your name? ')
if name == 'Ionut': # is it Ionut? print 'x1'
elif name == 'Aleksandar': print 'x2'
else: # in all other cases... print 'x3'
print 'x4'
If statements (4)
5
name = raw_input('Hi... what is your name? ')
if name == 'Ionut': print 'x1'
elif name == 'Aleksandar': print 'x2'
else: print 'x3'
print 'x4'
If statements (5)
6
name = raw_input('Hi... what is your name? ')
if name == 'Ionut': # is it Ionut? print 'x1'
elif name == 'Aleksandar': print 'x2'
elif name == 'Lisa': print 'x3'
else: # in all other cases... print 'x4'
print 'x5'
If statements (6)
7
name = raw_input('Hi... what is your name? ')
if name == 'Ionut‘: print 'x1'
elif name == 'Aleksandar’: print 'x2'
elif name == 'Lisa': print 'x3'
else: print 'x4'
print 'x5'
8
Today• Data!
• Labs at Wilkinson Lab tomorrow:
– Half of Homework 1– Bring your laptop if you’d like
Goal: Thinking like a machine
“Kinds” of dataWhat examples of data can you think of?
9
“Kinds” of dataWhat examples of data can you think of?
– Video – Statistics– Binary (I/0, True/False)– Matrices– Qualitative/quantitative
10
bool
Dominant
int
long
float
Recessive
41 + True
10**100 - 10**100
1.0 / 5
1 / 5
What will these results be?
Python (numeric) data types
Python Operato
rs
I’d go with parentheses over precedence
Precedence
*
%
**
/
>
<
==
+
-
Caution Level
=Highest
Lowest
**
* %/
> < ==
+ -
=
( )
( )
It's not worth remembering all these %+/* things!
remainder
power
is equal to
set equal to
divide
as usual
7 % 38 % 39 % 316 % 7
x%4 == 0
x%2 == 0
For what values of x are these
True?What happens on these
years?
x%y returns the remainder when x is divided by y
x%2 == 1
% the “mod” operator
>> x = 41>> y = x + 1
Naming data
x = 41y = x + 1
name: xtype: intLOC: 300
41
What is happening behind the scenes:
What's happening in python:
"variables as containers"
memory location 300
id, delComputation Data Storage
name: ytype: intLOC: 304
42
memory location 304
Inside the machine…
Random Access Memory (RAM)
byte = 8 bits
word = 4 bytes = 32 bits
is a long list of memory locations
bit = 1 "bucket" of charge
name: xtype: intLOC: 300
4 bytes for an int
on or off
42
Computer memory
>> x = 41>> y = x + 1>> x41>> y42>> x = x + y>> x??>> y??
Naming data
>> x = 41>> y = x + 1>> x41>> y42>> x = x + y>> x?? 83>> y??
Naming data
>> x = 41>> y = x + 1>> x41>> y42>> x = x + y>> x?? 83>> y?? 42
Naming data
Are numbers enough?No!
You need lists of numbers, as well!
and strings are helpful, too.
list
str
Networks
Images/Video
Sounds/Speech
{ 2, 3, 5, 7, 11 } ‘Many years later, as he faced the firing squad, Colonel Aureliano
Buendia was to remember that distant afternoon when his father took him to
discover ice.’
TextSets
Ideas?
Can all this information be
represented using lists ?
More complex data
string functions
strlen+*
converts input to a string
returns the string’s length
str(42) returns '42'
len('42') returns 2
'XL' + 'II' returns 'XLII'
'VI'*7 returns 'VIVIVIVIVIVIVI'
concatenates strings
repeats strings
s1 = 'ha's2 = 't'
Given these strings
s1 + s2
2*s1 + s2 + 2*(s1+s2)
What are
s[ ] indexes into the string, returning a one-character string
s = 'northwestern university'
s[0] returns 'n'
s[12]returns
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
S[ ] returns 'h' Which index returns 'e'?
python != English
s[len(s)] returns
Read "s-of-zero" or "s-zero"
index
String surgery
19 20 21 22
s[ ] indexes into the string, returning a one-character string
s = 'northwestern university'
s[0] returns 'n'
s[12]returns ' '
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
S[ ] returns 'h' Which index returns 'e'?
python != English
s[len(s)] returns
Read "s-of-zero" or "s-zero"
index
String surgery
19 20 21 22
s[ ] indexes into the string, returning a one-character string
s = 'northwestern university'
s[0] returns 'n'
s[12]returns ' '
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
S[4] returns 'h' Which index returns 'e'?
python != English
s[len(s)] returns
Read "s-of-zero" or "s-zero"
index
String surgery
19 20 21 22
s[ ] indexes into the string, returning a one-character string
s = 'northwestern university'
s[0] returns 'n'
s[12]returns ' '
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
S[4] returns 'h' Which index returns 'e'?
python != English
s[len(s)] returns ERROR
Read "s-of-zero" or "s-zero"
index
String surgery
19 20 21 22
s = 'northwestern university'
Negative indices…
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
-20
-21
-22
-23
Negative indices count backwards from the end!
s[-1] returns 'y'
s[-11] returns
s[-0] returns
s[ : ] slices the string, returning a substring
s[5:9] returns 'west's[0:5] returns 'north'
What's going on here?
s[17:] returns 'ersity's[:] returns 'northwestern university'
Slicing
s = 'northwestern university'0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
s[ : ] slices the string, returning a substring
s[5:9] returns 'west's[0:5] returns 'north'
s[17:] returns 'ersity's[:] returns 'northwestern university'
Slicing
s = 'northwestern university'0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
the first index is the first character of the slice
the second index is ONE AFTER the last character
a missing index means the end of the string
Skip-slicings = 'northwestern university'
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
s[ : : ] skip-slices, returning a subsequencethe third index is the "stride" length
it defaults to 1
s[0:8:2] returns 'nrhe'
What skip-slice returns
What does this return?
'ruv'
s[1::6]
Skip-slicings = 'northwestern university'
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
s[ : : ] skip-slices, returning a subsequencethe third index is the "stride" length
it defaults to 1
s[0:8:2] returns 'nrhe'
What skip-slice returns
What does this return?
'ruv' s[10:17:3]
s[1::6]
Skip-slicings = 'northwestern university'
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
s[ : : ] skip-slices, returning a subsequencethe third index is the "stride" length
it defaults to 1
s[0:8:2] returns 'nrhe'
What skip-slice returns
What does this return?
'ruv' s[10:17:3]
s[1::6] 'osus'
Lists ~ Strings of anything
L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a
list.
len(L)
L[0]
L[0:1]
'hi'How could you extract from L
Slicing: always returns the same typeIndexing: could return a different type
Commas separate elements.
Lists ~ Strings of anything
L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a
list.
len(L) 4
L[0]
L[0:1]
'hi'How could you extract from L
Slicing: always returns the same typeIndexing: could return a different type
Commas separate elements.
Lists ~ Strings of anything
L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a
list.
L[0] 3.14
L[0:1]
'hi'How could you extract from L
Slicing: always returns the same typeIndexing: could return a different type
Commas separate elements.
len(L) 4
Lists ~ Strings of anything
L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a
list.
L[0] 3.14
L[0:1] [3.14]
'hi'How could you extract from L
Slicing: always returns the same typeIndexing: could return a different type
Commas separate elements.
len(L) 4
Lists ~ Strings of anything
L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a
list.
L[0] 3.14
L[0:1] [3.14]
'hi' L[2][1:3]How could you extract from L
Slicing: always returns the same typeIndexing: could return a different type
Commas separate elements.
len(L) 4
Raising and razing lists
What are
"Quiz"pi = [3,1,4,1,5,9] Q = [ 'pi', "isn't", [4,2] ]
What slice of pi is [3,4,5]
What is pi[pi[2]]?
message = 'You need parentheses for chemistry !'
What is message[::5]
What are pi[0] * (pi[1] + pi[2]) and pi[0] * (pi[1:2] + pi[2:3])
What is message[9:15]
What are
What slice of pi is [3,1,4]
How many nested pi's before pi[…pi[0]…] produces an error?
Name(s):
Extra! Mind Muddlers
Part 2Part 1Q[0]
Q[0:1]
Q[0][1]
Q[1][0]
len(pi)len(Q)len(Q[1])
Raising and razing lists
What are
"Quiz"pi = [3,1,4,1,5,9] Q = [ 'pi', "isn't", [4,2] ]
What slice of pi is [3,4,5]
What is pi[pi[2]]?
message = 'You need parentheses for chemistry !'
What is message[::5]
What are pi[0] * (pi[1] + pi[2]) and pi[0] * (pi[1:2] + pi[2:3])
What is message[9:15]
What are
What slice of pi is [3,1,4]
How many nested pi's before pi[…pi[0]…] produces an error?
Name(s):
Extra! Mind Muddlers
Part 2Part 1Q[0]
Q[0:1]
Q[0][1]
Q[1][0]
len(pi)len(Q)len(Q[1])
>>> 3*'i' in 'alien'False
The in thing
>>> 'i' in 'team'False
>>> 'cs' in 'physics'True
>>> ‘sleep' not in ‘EECS 110'True
>>> 42 in [41,42,43]True
>>> 42 in [ [42], '42' ]False
a little bit different for lists…
Functioning in Python
Some basic, built-in functions:
abs
max
min
sum
range
round
bool
float
int
long
list
str
these change data from one type to another
absolute value
of lists
creates lists
only as accurately as it can!
helpThe most important: dir
Far more are available in separate files, or modules:
import math
math.sqrt( 1764 )
dir(math)
from math import *
pi
sin( pi/2 )
accesses math.py's functions
lists all of math.py's functions
same, but without typing math. all of the time…
Functioning in Python
# my own function!
def dbl( x ): """ returns double its input, x """ return 2*x
Functioning in Python
# my own function!
def dbl( x ): """ returns double its input, x """ return 2*x
Comments
Docstrings
(1) describes overall what the function does, and(2) explains what the inputs mean/are
They become part of python's built-in help system! With each function be sure to include
one that
They begin with #
keywords
def starts the functionreturn stops it immediately
and sends back the return value
Some of Python's baggage…
Functioning in Python