# -*- coding: utf-8 -*-
def multiplier(x,y):
    """
    faire la multiplication de x et y et renvoyer le resultat
    """
    return x * y
    #ce code n'est pas interprete, nous sommes sortis de la fonction
    return 12


resultat = multiplier(4, 4)
print(resultat)

def multiplier(x,y,z):
    """faire la multi des trois arguments """
    return x * y * z
    
resultat = multiplier(4, 4, 2)
print(resultat)

def multiplier_bis(x,y,z=None):
    """ deux arguments obligatoires 
        x, y et z sont attendus comme des entiers
    """
    if type(x)!=type(5):
        print("x n'est pas un entier: %s".format(x))
        return 0
    if z!=None:
        return x * y * z
    return x * y

resultat = multiplier_bis(5,5)
print(resultat)

resultat = multiplier_bis(5,5,5)
print(resultat)

resultat = multiplier_bis('5',5,5)
print(resultat)

resultat = multiplier_bis(5.5,5,5)
print(resultat)

def muliplier_multi_args(*args):
    """ ne pas connaitre le nombre d'arguments """
    resultatMulti = 1
    for arg in args:
        resultatMulti = resultatMulti * arg
    return resultatMulti
    
resultat = muliplier_multi_args(5,6,7,9,10)
print(resultat)

resultat = muliplier_multi_args(*[5,6,7,9,10])
print(resultat)

def muliplier_multi_args_avec_obligatoire(x, y, *args):
    """ ne pas connaitre le nombre d'arguments """
    resultatMulti = x * y
    for arg in args:
        resultatMulti = resultatMulti * arg
    return resultatMulti
    
resultat = muliplier_multi_args_avec_obligatoire(5,6,7,9,10)
print(resultat)

def muliplier_multi_kwArgs(**kwargs):
    """ traiter tous les arguments non explicites possibles (mot cle)"""
    resultatMulti = 1
    if kwargs.get('x'):
        resultatMulti = resultatMulti * kwargs['x']
        resultatMulti = resultatMulti * kwargs.get('x')
        
    if kwargs.get('y'):
        resultatMulti = resultatMulti * kwargs['y']
    if kwargs.get('zz'):
        resultatMulti = resultatMulti * kwargs['zz']
    if kwargs.get('z'):
        resultatMulti = resultatMulti * kwargs['z']
    return  resultatMulti
               
        
#Toto ne sera pas pris en compte    
resultat = muliplier_multi_kwArgs(x=5,y=6,z=7,zz=8,toto=12)
print(resultat)
    
def multiplier_complet(x,y,*args,**kwargs):
    """ tous les cas de figure sont pris en compte """
    print(x)
    print(y)
    print(args)
    print(kwargs)
    
multiplier_complet(5,6,7,8,zz=9,yy=10)


