#Please uncomment the part you need to run
#1
'''
def increment(x):
    return x + 1
increase = increment
print(increase(5))
'''

#2
'''
def greet(name, msg):
    print("Hello", name + ', ' + msg)
greet("Monica", "Good morning!")
greet() #TypeError
'''

#3
'''
def greet(firstname="Mr.", lastname="Who"):
    print("Hello,", firstname, lastname)
greet()
greet("Ahmed")
greet(lastname="Mohamed")
greet("Ahmed", "Aly")
'''

#4
'''
def accessArguments(x, y = 1, z = 2):
    print("X= ", x, "Y= ", y, "Z= ", z)
accessArguments(3)
accessArguments(3, 10)
accessArguments(3, z = 5)
accessArguments(3, z = 4, y = 6)
'''

#5
'''
def greet(*names):
    for name in names:
        print("Hello," , name)
greet("Ahmed", "Mohamed", "Aly")
'''

#6
'''
def outer_func(who):
    def inner_func():
        print("Hello,", who)
inner_func()
outer_func("Hamada")
'''

#7
'''
def factorial(number):
    def inner_factorial(number):
        if number <= 1:
            return 1
        return number * inner_factorial(number - 1)
    return inner_factorial(number)
print(factorial(5))
'''

#8
'''
def loud(text):
    return text.upper()
def quiet(text):
    return text.lower()
def hello(func):
    text = func("Hello")
    print(text)
hello(loud)
'''

#9
'''
def divisor(x):
    def dividend(y):
        return y / x
    return dividend
divide = divisor(2)
print(divide(10))
'''

#10
'''
def add_two_nums(x, y):
    return x + y
def add_three_nums(x, y, z):
    return x + y + z
def get_appropriate_function(num_len):
    if num_len == 3:
        return add_three_nums
    else:
        return add_two_nums
args = [1, 2, 3]
num_len = len(args)
res_function = get_appropriate_function(num_len)
print(res_function)
print(res_function(*args))
'''

#11
'''
double = lambda x: x * 2
print(double(5))
'''

#12
'''
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list( filter(lambda x: (x%2 == 0) , my_list) )
print(new_list)
'''

#13
'''
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list( map(lambda x: x * 2 , my_list) )
print(new_list)
'''

#14
'''
import random
print(random)
print(random.random())
print(dir(random))
'''

#15
'''
from random import randint
print(random.randint(100, 500)) #get an error
print(randint(100, 500))
'''

#16
'''
import os
print(os.getcwd())
os.mkdir("/change/this/path/NewFolder")
os.mkdir("NewFolder")
os.chdir("/change/this/path/FCI")
os.getcwd()
os.rmdir("/change/this/path/NewFolder")
os.listdir("/change/this/path/FCI")
os.listdir()
'''