eecs 110: lec 3: data aleksandar kuzmanovic northwestern university

Post on 06-Jan-2018

226 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

top related