44
EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University http://cs.northwestern.edu/~akuzma/classes/ EECS110-s09/

EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

Embed Size (px)

DESCRIPTION

If statements (2) 3 name = raw_input('Hi... what is your name? ') if name == 'Ionut‘: print 'x1' else: print 'x2' print 'x3'

Citation preview

Page 1: 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/

Page 2: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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'

Page 3: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

If statements (2)

3

name = raw_input('Hi... what is your name? ')

if name == 'Ionut‘: print 'x1' else: print 'x2'

print 'x3'

Page 4: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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'

Page 5: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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'

Page 6: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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'

Page 7: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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'

Page 8: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

8

Today• Data!

• Labs at Wilkinson Lab tomorrow:

– Half of Homework 1– Bring your laptop if you’d like

Goal: Thinking like a machine

Page 9: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

“Kinds” of dataWhat examples of data can you think of?

9

Page 10: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

“Kinds” of dataWhat examples of data can you think of?

– Video – Statistics– Binary (I/0, True/False)– Matrices– Qualitative/quantitative

10

Page 11: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 12: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 13: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 14: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

>> x = 41>> y = x + 1

Naming data

Page 15: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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…

Page 16: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 17: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

>> x = 41>> y = x + 1>> x41>> y42>> x = x + y>> x??>> y??

Naming data

Page 18: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

>> x = 41>> y = x + 1>> x41>> y42>> x = x + y>> x?? 83>> y??

Naming data

Page 19: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

>> x = 41>> y = x + 1>> x41>> y42>> x = x + y>> x?? 83>> y?? 42

Naming data

Page 20: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

Are numbers enough?No!

You need lists of numbers, as well!

and strings are helpful, too.

list

str

Page 21: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 22: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 23: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 24: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 25: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 26: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 27: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 28: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 29: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 30: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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]

Page 31: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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]

Page 32: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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'

Page 33: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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.

Page 34: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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.

Page 35: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 36: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 37: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 38: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 39: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 40: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

>>> 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…

Page 41: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 42: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

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

Page 43: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

# my own function!

def dbl( x ): """ returns double its input, x """ return 2*x

Functioning in Python

Page 44: EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University

# 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