# Exercice 7

''' Dans le script de gauche, l'instruction "b=b+1" est effectuée quoi qu'il arrive. Dans le script de droite, cette même instsruction n'est executée QUE SI a > 3.
Par exemple pour a=1, la variable b vaut (1+1=)2 à la fin du script de gauche, mais 1 à la fin du script de droite.'''


# Exercice 8

def produit(x,y):
    return x*y

def implique(A,B):
    C = (not A) or B    # retour à la définition !
    return C

def fonction(x):
    if x >= 4:
        return 2*x + 1
    elif x >= 2:
        return 2*x
    else:
        return 3 - 2*x

def est_pair(n):
    if n%2 == 0:
        return True
    else:
        return False


# Exercice 9

from math import sqrt

def racines(a,b,c):
    delta = b**2 - 4*a*c
    if delta < 0:
        return None
    elif delta == 0:
        racine = -b/(2*a)
        return racine
    else:
        racine1 = (-b-sqrt(delta))/(2*a)
        racine2 = (-b+sqrt(delta))/(2*a)
        return racine1, racine2


# Exercice 10

def bissextile(année):
    if année % 400 == 0:
        return True
    elif année % 100 == 0:
        return False
    elif année % 4 == 0:
        return True
    else:
        return False

print(bissextile(2000), bissextile(2007), bissextile(2024), bissextile(2026), bissextile(2100)) # Pour vérifier !


# Exercice 11 - À la place d'utiliser une variable C, j'écris une fonction qui renvoie la valeur booléenne voulue.

def négation(B):
    if B == True:
        return False
    else:
        return True

def et_logique(A,B):
    if A == True:
        if B == True:
            return True
        else:
            return False
    else:
        return False

def ou_logique(A,B):
    if A == True:
        return True
    else:
        if B == True:
            return True
        else:
            return False