# Python: User-Defined Functions

#### Passing Back More Than One Variable

User-defined functions can pass back more than one variable to the main several ways.

#### Example: Passing multiple values back as a tuple

A tuple in Python is like a static array. It stores in memory a collection of items that are ordered and cannot be altered. They are created using parentheses/round brackets.

``````
def combine():
x = 1
y = 2
z = 3
return x, y, z

a = combine()
print(a)
for i in a:
print(i)
``````

Output:

(1, 2, 3)
1
2
3

#### Example: Passing multiple values back as variables

``````
def getInfo():
name = input("Please enter your name: ")
age = int(input("Please enter your age: "))
return name, age

name, age = getInfo()
print("Name: ", name, "\tAge: ", age)
``````

Output:

Name: Heather Age: 25

#### Example: Passing a Function to a Function

This program passes the getF() function to the convertC() function.

``````
def getF():
f=int(input("Enter F temperature to convert to C:"))
return f

def convertC(f):
c = (f - 32) * (9 / 5)
if c < 0:
print(c, "C. Brr. That's chilly.")
elif c < 30:
print(c, "C. That's not too bad.")
else:
print(c, "C. That's hot!.")

convertC(getF())
``````

#### Example: Alternate method to previous example

``````
def getF():
f=int(input("Enter F temperature to convert to C:"))
return f

def convertC(f):
c = (f - 32) * (9 / 5)
return c

c = int(convertC(getF()))
if c < 0:
print(c, "C. Brr. That's chilly.")
elif c < 30:
print(c, "C. That's not too bad.")
else:
print(c, "C. That's hot!.")
``````

#### Example: Passing a function to a function to a function

``````
def getNums():
num1=int(input("Enter number 1:"))
num2=int(input("Enter number 2:"))
return num1, num2

sum_nums = sum(nums)
return sum_nums

def displayNums(total):
print("The sum of the two numbers is", total)

``````

#### Example: Functions

``````
def getScore():
score = int(input("Enter score: "))
while score < 0 or score > 100:
print ("Invalid score. Please enter value from 0 to 100.")
score = int(input("Enter score: "))
return score

def calcAverage(score1,score2,score3):
avg=(score1+score2+score3)/3
if avg >= 90:
elif avg >= 80:
elif avg >= 70:
elif avg >= 60:
else:
print("Your average is", avg, "which is a", grade)

score1 = getScore()
score2 = getScore()
score3 = getScore()
calcAverage(score1,score2,score3)
``````

#### Recursion

Recursive functions are functions that call themselves

#### Example: Recursive function in Python to calculate factorial

``````
def recur_factorial(n):
if n == 1:
return n
else:
return n*recur_factorial(n-1)

num = int(input("Enter a positive number: "))

if num < 0:
print("Sorry. Please enter a positive number.")
elif num == 0:
print("The factorial of 0 is 1")
else:
print("The factorial of" , num, "is", recur_factorial(num))
``````

Output:

Enter a positive number: 4
The factorial of 4 is 24