F u n c t i o n s R e t u r n V a l u e s - - PowerPoint PPT Presentation

f u n c t i o n s r e t u r n v a l u e s
SMART_READER_LITE
LIVE PREVIEW

F u n c t i o n s R e t u r n V a l u e s - - PowerPoint PPT Presentation

F u n c t i o n s R e t u r n V a l u e s Returns None Returns a value Output not reusable Output reusable 1 def fxn_avg (a, b): 1 def fxn_avg (a, b): 2 sum = a + b 2 sum = a + b 3 avg = sum/2 3


slide-1
SLIDE 1

F u n c t i

  • n

s – R e t u r n V a l u e s

 Returns None  Output not reusable

1 def fxn_avg (a, b): 2 sum = a + b 3 avg = sum/2 4 print (avg) 5 6 y = fxn_add (10, 10) 7 print (y) # None 8 type(y) 9 # <class 'NoneType'>

 Returns a value  Output reusable

1 def fxn_avg (a, b): 2 sum = a + b 3 avg = sum/2 4 return avg 5 6 y = fxn_add (10, 10) 7 print (y) # 10 8 type(y) 9 # <class 'float'>

slide-2
SLIDE 2

F u n c t i

  • n

s – R e t u r n V a l u e s

 Only ONE value returned  Comma seperated values implicitly converted

into tuple 1 def fxn_avg (a, b): 2 sum = a + b 3 avg = sum/2 4 return sum, avg 5 6 y = fxn_add (10, 10) 7 print (y) # (20, 10.0) 8 type(y) # <class 'tuple'>

slide-3
SLIDE 3

F u n c t i

  • n

s – D u p l i c a t i

  • n

 Adding arbitrary

numbers 1 def fxn_add (*args): 2 sum = 0 3 for i in args: 4 sum += i 5 return sum 6 7 fxn_add (1,2,3)

 Average of arbitrary

numbers 1 def fxn_avg (*args): 2 sum = 0 3 count = len(args) 4 for i in args: 5 sum += i 6 avg = sum/count 7 return avg 8 7 fxn_avg (1, 2, 3)

slide-4
SLIDE 4

F u n c t i

  • n

s – R e u s e & D e d u p l i c a t i

  • n

1 def fxn_add (*args): 2 sum = 0 3 for i in args: 4 sum += i 5 return sum 6 7 fxn_add (...) 8 1 def fxn_avg (*args): 2 sum = fxn_add(*args) 3 count = len(args) 4 avg = sum/count 5 return avg 6 7 fxn_add () 8

slide-5
SLIDE 5

F u n c t i

  • n

s – R e u s e & D e d u p l i c a t i

  • n

 Without reuse

1 def fxn_avg (*args): 2 sum = 0 3 count = len(args) 4 for i in args: 5 sum += i 6 avg = sum/count 7 return sum 8 9 fxn_avg (...)

 With reuse

1 def fxn_avg (*args): 2 sum = fxn_add(*args) 3 count = len(args) 4 avg = sum/count 5 return avg 6 7 fxn_add ()

slide-6
SLIDE 6

F u n c t i

  • n

s – M

  • r

e

  • n

R e u s e

 Module files

# csc1017f.py 1 def fxn_1 (): 3 return “fxn_1” 4 5 def fxn_2 (): 6 return “fxn_2” 7 8 def fxn_3 (): 9 return “fxn_3”

 Module reuse

1 import csc1017f 2 3 csc1017f.fxn_1() 4 csc1017f.fxn_2() 5 5 from csc1017f import fxn_3 6 7 fxn_2() 6 7 fxn_add ()

slide-7
SLIDE 7

S T O P N – E x a m p l e s w i t h B u i l t i n s

 Would this work? What is the result? What is

the return type?

 y = print(“hello”)  y = len(“four”)  y = input(“Enter value:”)

slide-8
SLIDE 8

Testing

UCT Department of Computer Science Computer Science 1017F Lighton Phiri <lphiri@cs.uct.ac.za> April 2015

slide-9
SLIDE 9

I n t r

  • d

u c t i

  • n

 Wh

a t i s a n e r r

  • r

?

 Wh

e n y

  • u

r p r

  • g

r a m d

  • e

s n

  • t

b e h a v e a s i n t e n d e d

  • r

e x p e c t e d .

 Wh

a t i s a b u g ?

 “

… a b u g c r e p t i n t

  • m

y p r

  • g

r a m … ”

 D

e b u g g i n g

 t

h e a r t

  • f

r e m

  • v

i n g b u g s

slide-10
SLIDE 10

T y p e s

  • f

E r r

  • r

s – S y n t a x E r r

  • r

s

 S

y n t a x E r r

  • r

s

 F

a i l u r e t

  • c
  • n

f

  • r

m t

  • P

y t h

  • n

i c s y n t a c t i c r u l e s

 I

m p r

  • p

e r u s e

  • f

P y t h

  • n

l a n g u a g e – u s u a l l y S y n t a x E r r

  • r

s .

 1

2 v a r = 2

File "<stdin>", line 1 12var = 2 ^ SyntaxError: invalid syntax

 F

i x i n g S y n t a x E r r

  • r

s

 E

a s i e s t t y p e

  • f

e r r

  • r

t

  • fi

x

 C

  • n

f

  • r

m ! F

  • l

l

  • w

t h e r u l e s !

slide-11
SLIDE 11

T y p e s

  • f

E r r

  • r

s – R u n t i m e E r r

  • r

s

 R

u n t i m e E r r

  • r

s

 P

r

  • g

r a m i s s y n t a c t i c a l l y c

  • r

r e c t b u t e r r

  • r

d e t e c t e d a f t e r e x e c u t i

  • n

.

 a = 1/0 (ZeroDivisionError: division by zero)  a = b + 10  3 “four”[100] (IndexError: string index out of

range)

 I/O operations

 F

i x i n g R u n t i m e E r r

  • r

s

 E

x c e p t i

  • n

h a n d l i n g .

 N

  • r

m a l l y a b l e t

  • a

n t i c i p a t e p

  • t

e n t i a l p r

  • g

r a m fl a w s

 E

x a m p l e s a b

  • v

e i l l u s t r a t e t h i s

slide-12
SLIDE 12

T y p e s

  • f

E r r

  • r

s – R u n t i m e E r r

  • r

s

 E

x c e p t i

  • n

h a n d l i n g i n v

  • l

v e d

1 def fxn_divide (a, b): 2 result = 0 3 try: 4 result = a / b 5 except ZeroDivisionError: 6 print (“Division by ZERO error!”) 7 return result 8 9 fxn_divide(1, 0)

slide-13
SLIDE 13

T y p e s

  • f

E r r

  • r

s – L

  • g

i c a l E r r

  • r

s

 L

  • g

i c a l E r r

  • r

s

 P

r

  • g

r a m p a r s e d b y b y i n t e r p r e t e r a n d r u n s s u c c e s s f u l l y , b u t p r

  • d

u c e s u n d e s i r a b l e r e s u l t s

 sum = 1 - 1  Conditionals—logical operators—and,

  • r, not

 F

i x i n g L

  • g

i c a l E r r

  • r

s

 P

r

  • g

r a m m e r r e s p

  • n

s i b i l i t y t

  • e

n s u r e c

  • d

e f u n c t i

  • n

s a s r e q u i r e d b e f

  • r

e r e l e a s i n g i t

 D

e b u g g i n g

 T

e s t i n g

slide-14
SLIDE 14

S T O P 1 : I d e n t i f y i n g E r r

  • r

s

1 def add_x (a, b): 2 return a + b 3 print (“Output”) # Logical Error 4 5 add_x(“1”, “2”) # Logical Error 6 add_x(+) # Syntax Error 7 add_x() # Runtime Error

 I

d e n t i f y e r r

  • r

s i n c

  • d

e s n i p p e t —w h a t t y p e s a r e t h e y ?

 A

n i n d i v i d u a l r e c e n t l y w

  • n

a $ 5 k G

  • g

l e b

  • u

n t y f

  • r

fi g u r i n g

  • u

t t h a t Y

  • u

T u b e v i d e

  • s

c

  • u

l d e a s i l y b e d e l e t e d . Wh a t e r r

  • r

w a s i d e n t i fi e d ?

slide-15
SLIDE 15

D e b u g g i n g

 Debugging

i s t h e p r

  • c

e s s

  • f

fi n d i n g errors

  • r

bugs i n t h e c

  • d

e .

 D

e b u g g i n g t e c h n i q u e s

 A

p p l i c a t i

  • n

s t a c k t r a c e s —A n d r

  • i

d a p p , We b b r

  • w

s e r s , O S e s

 A

debugger i s a t

  • l

f

  • r

e x e c u t i n g a n a p p l i c a t i

  • n

w h e r e t h e p r

  • g

r a m m e r c a n c a r e f u l l y c

  • n

t r

  • l

e x e c u t i

  • n

a n d i n s p e c t d a t a .

 F

e a t u r e s i n c l u d e :

 s

t e p t h r

  • u

g h c

  • d

e

  • n

e i n s t r u c t i

  • n

a t a t i m e

 v

i e w i n g v a r i a b l e s

 i

n s e r t a n d r e m

  • v

e b r e a k p

  • i

n t s t

  • p

a u s e e x e c u t i

  • n
slide-16
SLIDE 16

B a s i c D e b u g g i n g T e c h n i q u e s

 C

  • m

m e n t i n g

  • u

t c

  • d

e t h

  • u

g h t t

  • b

e r

  • t

c a u s e

  • f

p r

  • b

l e m

1 # result = a/b # possible division by 0 2 if b > 0 3 result = a/b 4

 B

u i l t i n

  • u

t p u t f u n c t i

  • n

 p

r i n t ( … )

slide-17
SLIDE 17

D e b u g g i n g w i t h Wi n g

 H

a n d s

  • n

L a b

  • r

a t

  • r

y E x e r c i s e

 N

e x t w e e k

 S

e t b r e a k p

  • i

n t s i n t h e c

  • d

e t

  • h

a l t e x e c u t i

  • n

p a t h

 I

n i t i a t e e x e c u t i

  • n

i n d e b u g m

  • d

e , s t a r t d e b u g g i n g

 F

a c i l i t a t e u s e r i n p u t /

  • u

t p u t i n I / O D e b u g w i n d

  • w

 S

t e p t h r

  • u

g h c

  • d

e a n d v i e w —i n r e a l

  • t

i m e —v a r i a b l e c h a n g e i n s t a c k d a t a w i n d

  • w

 S

t

  • p

d e b u g g i n g w h e n e r r

  • r

i s l

  • c

a t e d