Presentation is loading. Please wait.

Presentation is loading. Please wait.

PPT 2. Other things: functions  Can you have a function with no inputs?  Yes: def f( ): return (3 + 4 )  Can you have a function with no outputs? 

Similar presentations


Presentation on theme: "PPT 2. Other things: functions  Can you have a function with no inputs?  Yes: def f( ): return (3 + 4 )  Can you have a function with no outputs? "— Presentation transcript:

1 PPT 2

2 Other things: functions  Can you have a function with no inputs?  Yes: def f( ): return (3 + 4 )  Can you have a function with no outputs?  Yes: def f(x): 3 + 4  Can you have a function with no inputs and outputs?  Yes: def f( ): 3 + 4

3 Functions:  Math: f(x) = x 3  Python:def f(x): return(x**3) Given a particular input to this function, will we ALWAYS get the same output? e.g. f(2) f(3) Could we say that f(2) is equivalent to 8? Could we say that f(3) is equivalent to 27?

4 Functions(how they work) def f(x): # code for a function that return(x**3) # returns the cube of a number f(2)# Calls the function. The function is now executed (i.e., calculated, # converted to machine language and instructions run by the CPU). # # After f(2) runs, all that remains is what is RETURNED When the function is done being executed, 8 is returned (i.e., output from the function) and the instructions are removed from memory (RAM). Only 8 remains. Thus, for our purposes, f(2) is exactly the same thing as the number 8.

5 Using functions:  Remember: after we use a function, what remains is what is returned from the function def add2(x,y): return(x + y) def add(x,y): return(add2(x,y) + add2(x,y)) print(add(7,3))

6 Using functions: def add2(x,y): return(x + y) def div(x,y,z): return(add2(x,y) / z) print(div(7,3,2))

7 Using functions: def add2(x,y): return(x + y) def div(x,z): return(add2(x,3) / z) print(div(7,2))

8 Using functions: def add2(x,y): return(x + y) def div(y,x): return(add2(y,3) / x) print(div(7,2))

9 Using functions: def add2(x,y): return(x + y) def add3(y,x): return(add2(y,3) + add2(11,x)) print(add3(7,2))

10 def f1(par1, par2): return(par2 - par1) print(f1(2,4)) #2 def f2(x1,x2): return(x1**2 + x2) print(f2(3,6)) #15 def f3(p1,p2): return(f2(p1,p2) + f1(p1,p2)) print(f3(3,2)) 10 def f4(p1,p2): return(f2(p2,p2) - f1(p1,p1)) print(f4(4,2)) 6 def f5(q1,q2): return(f2(q2,q1)) print(f5(17,5)) 42 def f6(par1,par2): return( 3 + f1(par1, 17+par1)) print(f6(4,26)) 20

11 Given the function def Squr(par1): return(par1 ** 2) def dbl(par2): return(par2 + par2) def Func1(p1,p2): return(Squr(p1) - Squr(p2)) print(Func1(4,3)) >>7 def Func2(p1,p2,p3): return(Squr(p1) * Func1(p2,p3)) print(Func2(2,3,2)) >>20 def Func3(p1,p2): return(dbl(Squr(p1))) print(Func3(4)) >>AACH CRASH BURN def Func4(p1,p2): return(dbl(Squr(p2)+ Squr(p2)+3)) print(Func4(2,4)) >> 70 def Func6(p1): return(dbl(dbl(dbl(Squr(p1)+1))-Squr(3))) print(Func6(-2)) >>22

12 Piecewise functions

13 If /else (branching) def f(x): if x > 0: return (3**2/x) else: return (0) f(3) # this equals? f(0) # this equals? f(-2) # this equals? 3 2 if x > 0 _ f(x) = x 0 otherwise

14 Piecewise functions  How about this? x 3 + 2x if x > 2 f(x) = -x 3 + 2x if x < 0 -1 otherwise

15 If /else (branching) def f(x): if x > 2: return (x ** 3 + 2 * x) elif x < 0: return(-x ** 3 + 2 * x) else: return (-1) f(3) # this equals? f(0) # this equals? f(-2)# this equals? x 3 + 2x if x > 2 f(x) = -x 3 + 2x if x < 0 -1 otherwise

16 Comparators (return T or F) ==equal to5==5true !=not equal to8!=5true >greater than3>10false <less than5<8true >=greater than 6>=8false or equal to <=less than6<=8true or equal to

17 Note: ==  if conditions MUST use == (equality)  not = (assignment)  ==  Asks a question: is this equal to that???  this == that ?  Yes or No!  True, this is equal to that, or  False, this is not equal to that  =  We’ll see this in use shortly

18 If Statement structure: if condition1 is true: execute this statement(s) elif condition 2 is true: execute this statement(s) elif condition3 is true: execute this statement(s) else: execute this statement(s) #only one else condition!

19 Rules for If/elif/else: 1. If/elif condition must evaluate something that is True or False  if (3== 4)…  if (8 > 4)…  if (f2(3) < 4)…  if (func(7)!=4)… 2. If does not require an elif or an else 1. Only one else if there is an else 3. The first branch that is true is executed, and nothing else: if (x > 3): return(3) elif (x > 2): return (2) 4. If the condition is False, nothing indented under the condition is executed.

20 Example def f(x): if x > 10: return (x+9) elif x < 7: return (x + 4) else: return(0) print(f(12)) # what is printed? print(f(6)) # what is printed? print(f(8)) # what is printed? print(f(7)) # what is printed?

21 Example def f(x): if x != 10: return (x * 2) else: return (x ** 2) print(f(6)) print(f(10))

22 Example def f(x): if x < 10: return (x+9) elif x == 5: return (x + 4) elif x >10: return (x) else: return(0) print(f(5)) ?

23 and def q(x): if (x>5) and (x < 10): return("just enough") elif (x >= 10) and (x < 15): return("too much") else: return("no idea") print(q(12)) 1. What does and do? 2. What type is returned from this function?

24 Logical Operators and(True and True) (True and False) (False and True) (False and False) True False or(True or True) (True or False) (False or True) (False or False) True False not(not True) (not False) False True

25 diff? def q1(x): if (x>6) and (x < 5): return("just enough") elif (x > 15) and (x < 20): return("too much") else: return("no idea") print(q1(7)) print(q1(13)) def q2(x): if (x>6) or (x < 5): return("just enough") elif (x > 15) or (x < 20): return("too much") else: return("no idea") print(q2(7)) print(q2(13))

26 What happens? def ReturnSomething(value): if value = 1: return “glub” else: return “blug” print (ReturnSomething(1))

27 Strings  Python cares about types :  We can do different operations on different types  Can’t add a string with a number:  Can’t: print(“puddle” + 4)  Can add strings to strings!  Word of the day: Concatenate  means join (string concatenated to string)  Can: print(“puddle” + “ jumping”)  Can: print(“puddle” + “4”)  Can: return(“bat” + “ty”)  Can multiply a string by a number:  Can: print(“bla” * 38)  Can’t: print(“bla” * “bla”)

28 Operator overloading:  doing more than one operation with the same operator, depending on the types involved  using + for both numbers (to add) and strings (to join, aka CONCATENATE)  using * to multiply numbers and * to make multiple copies of a string

29 Adding Strings: def addstrings(par1): return(par1 + "ubba") print (addstrings("gub")) def addmore(par1): return(addstrings(par1)+addstrings(par1)) print(addmore("hab"))

30 Printing inside my function:  What if I want to see the string that was input into the function? def addstrings(par1): print(“par1 came in”) return(par1 + "ubba") print (addstrings("gub")) We want to print what’s inside par1, not “par1” Now we’re adding what’s inside par1 to “came in” and that is what gets printed by the function before we leave the function. print(par1 + “came in”)

31 Printing inside a function def f_to_c(ftemp): print("The temp before conversion is ftemp") return((ftemp - 32 )/ 1.8) print (f_to_c(68)) print (f_to_c(22))  Is this what we wanted?  Is this what we want now? print("The temp before conversion is” + ftemp

32 Solution def f_to_c(ftemp): print("The temp before conversion is” + str(ftemp)) return((ftemp - 32 )/ 1.8) print (f_to_c(68)) print (f_to_c(22))  Note:  ftemp is not in quotes.  When it is not in quotes, we’re talking about what’s inside of ftemp and not the word ftemp  what is inside of ftemp is an integer.  We can’t add integers to strings  str(ftemp)  takes the number inside of the parameter ftemp and converts it to a string

33 New Function  input : 3 integers - x, y and z  Output: a string  “Yes x is divisible by both y and z” or  “No, x is not evenly divisible by y and z”  “x is not in range”  Function name: isDivisible  Calculations:  Two parts:  check if x is between 0 and 100  Check if x is evenly divisible by both y and z

34 # input : 3 integers, x, y and z # Output: a string # “Yes x is divisible by both y and z” or # “No, x is not evenly divisible by y and z” # “x is not in range” # Function name: isDivisible # Calculations: check if x is greater than 0 and less than 100 and is evenly #divisible by both y and z def isDivisible(x, y,z): if ((x > 0)and (x < 100)) and ((x%y) == 0) and (x % z) == 0): #ugh! Long and hard to read return (“Yes “+str(x)+” is divisible by both “+str(y)+” and “+str(z)) else: return (“No, “+str(x)+” is not evenly divisible by “+str(y)+” and “+str(z)) print(isDivisible(15,5,3)) print(isDivisible(150,5,3)) Is this what we want ? Will it always work?

35 # input : 3 integers, x, y and z # Output: a string # “Yes x is divisible by both y and z” or # “No, x is not evenly divisible by y and z” # “x is not in range” # Function name: isDivisible # Calculations: check if x is greater than 0 and less than 100 and is evenly #divisible by both y and z def isDivisible(x, y,z): if ((x > 0)and (x < 100)) and ((x%y) == 0) and (x % z) == 0): return (“Yes “+str(x)+” is divisible by both “+str(y)+” and “+str(z)) elif ((x > 0)and (x < 100)) : return (“No, “+str(x)+” is not evenly divisible by “+str(y)+” and “+str(z)) else: return (str(x) + “is not in range”) print(isDivisible(15,5,3)) print(isDivisible(150,5,3)) Is this what we want ? Will it always work?

36 #input : 3 integers, x, y and z #Output: a string # “Yes x is divisible by both y and z” or # “No, x is not evenly divisible by y and z” # “x is not in range” #Function name: isDivisible #Calculations: check if x is greater than 0 and less than 100 and is evenly #divisible by both y and z def isDivisible(x, y,z) if (x > 0)and (x < 100): if ((x%y) == 0) and ((x % z) == 0): return (“Yes “+str(x)+” is divisible by both “+str(y)+” and “+str(z)) else: return (“No, “+str(x)+” isn’t evenly divisible by “+str(y)+” and “+str(z)) else: return(str(x ) + “ is not in range”) print(isDivisible(15,5,3)) print(isDivisible(150,5,3)) Now what if x is 250 or -1?

37 Same? def g(x): if (x>5) and (x < 10): return("just enough") elif (x > 5) and (x < 15): return("too much") else: return("no idea") def g(x): if (x > 5): if (x < 10): return("just enough") elif (x < 15): return("too much") else: return("no idea") print (g(12)) What about: print (g(17))

38 Loan Qualifier We want to write a function that tells someone whether they qualify for a loan.  If a person makes more than 35,000 and they’ve been employed for at least 2 years,  they qualify.  If they make over 35,000, but haven’t been employed for at least 2 years,  They should get a message saying how long they need to wait before they can get the loan  (e.g., if they’ve only been employed for 1.2 years, the program should tell them to come back in.8 years)  If they don’t make 35,000, but have been employed for over 2 years,  They should get a message telling them the minimum salary requirement  If they don’t make 35,000 and they haven’t been employed for 2 years,  they don’t qualify. Using Nested If (ifs inside of ifs) can you write this?

39 LoanQualifier def loanqualifier(sal,yrs): if (sal > 35000): if (yrs >= 2): return("Congratulations! You qualify!") else: temp = str(2 – yrs) return("You will qualify in " + str(round(2-yrs),2)+ " years.") else: if (yrs>=2): return("You need to make at least 35000 to qualify for a loan") else: return("I'm sorry, you don't qualify.") #Note the test cases – we’re testing all outputs to make sure they work print (loanqualifier(40000,4)) print (loanqualifier(40000,1.2)) print (loanqualifier(20000,4)) print (loanqualifier(20000,1.2))

40 LoanQualifier def loanqualifier(sal,yrs): if (sal > 35000): if (yrs >= 2): return("Congratulations! You qualify!") else: return("You will qualify in " + str(round(2-yrs),2)+ " years.") else: if (yrs>=2): return("You need to make at least 35000 to qualify for a loan") else: return("I'm sorry, you don't qualify.") #Note the test cases – we’re testing all outputs to make sure they work print (loanqualifier(40000,4)) print (loanqualifier(40000,1.2)) print (loanqualifier(20000,4)) print (loanqualifier(20000,1.2))

41 LoanQualifier def loanqualifier(sal,yrs): if (sal > 35000): if (yrs >= 2): return("Congratulations! You qualify!") else: temp = str(2 – yrs) return("You will qualify in " + temp + " years.") else: if (yrs>=2): return("You need to make at least 35000 to qualify for a loan") else: return("I'm sorry, you don't qualify.") #Note the test cases – we’re testing all outputs to make sure they work print (loanqualifier(40000,4)) print (loanqualifier(40000,1.2)) print (loanqualifier(20000,4)) print (loanqualifier(20000,1.2))


Download ppt "PPT 2. Other things: functions  Can you have a function with no inputs?  Yes: def f( ): return (3 + 4 )  Can you have a function with no outputs? "

Similar presentations


Ads by Google