1. Liste - Dictionnaire
  2. Récursivité
  3. sd1 : interface, pile, file
  4. sd2 : POO
  5. BDD : base de données
  6. sd4 : arbres

Page en évolution constante !

Cette page est dédiée aux exercices de début de séances : des exercices ciblés, assez courts, visant à installer des automatismes.

Vous retrouvez l'équivalent en première dans la section avant propos : Warmup - Automatismes .

Cette page est utile pour vous préparer à l'exercice 1 de l'épreuve pratique du baccalauréat. A travailler et retravailler sans modération.

Bon codage à vous !

Liste - Dictionnaire

fonction dico_lettres(phrase) dictionnaire type str

Ecrire une fonction dico_lettres(phrase) qui prend une variable typée str phrase en argument et renvoie le dictionnaire des occurrences des lettres de phrase.

Par exemple, dico_lettres('bob') renvoie {'b':2,'o':1} .

Code de déblocage de la correction :

Ecrire une fonction est_trie_croissant(l) qui prend une variable typée list l en argument et renvoie un booléen qui indique si la liste est triée.

Par exemple, est_trie_croissant([1,2,3]) renvoie True .

Par exemple, est_trie_croissant([]) renvoie True .

Par exemple, est_trie_croissant([2,1,3,4]) renvoie False .

vous pouvez compliquer votre code en traitant les cas où les nombres sont dans l'ordre croissant ou décroissant.

Code de déblocage de la correction :

Dictionnaire, tuple

Baston! Partie 1

On dispose d'un dictionnaire constitué de chaînes de caractères pour clés représentant le nom de personnages et de tuple constituant les valeurs. Les tuples sont constitués de trois entiers : le premier qui représente l'initiative du personnage, le second l'attaque du personnage et le dernier la défense.

characters ={'Conan' : (5, 123, 25), 'Galadriel' : (5, 60, 60), 'Rey' : (6, 100,25), 'Bob l’éponge' : (1, 12, 12), 'Passe kal T rez' : (12, 1200, 1200)} 

  1. Ecrire une fonction firstAttack(characters, character1, character2) qui prend en argument un dictionnaire du type décrit ci-dessus et deux chaînes de caractères qui renvoie le personnage avec le plus d'initiative.

  2. Ajouter une précondition afin de vérifier que character1 et character2 sont dans le dictionnaire characters.

  3. Bonus : proposer d'autres personnages pour nourrir le dictionnaire et rendre la suite plus distrayante.

Code de déblocage de la correction :

Dictionnaire, liste, papier

Baston! Partie 2

On dispose d'un dictionnaire constitué de chaînes de caractères pour clés représentant le nom de personnages et de tuple constituant les valeurs. Les listes sont constitués de trois entiers : le premier qui représente l'initiative du personnage, le second l'attaque du personnage et le dernier la défense.

characters ={'Conan' : [5, 123, 25], 'Galadriel' : [5, 60, 60], 'Rey' : [6, 100,25], 'Bob l’éponge' : [1, 12, 12], 'Passe kal T rez' : [12, 1200, 1200]} 

  1. Ecrire une fonction battle(characters, character1, character2) qui prend en arguments un dictionnaire du type décrit ci-dessus et deux chaînes de caractères qui modifie le dictionnaire conséquement au combat. Le personnage avec plus d'initiative frappe en premier, si le second survie, il frappe à son tour. La fonction renverra l'état des deux combatants. Dans cette question, l'attaque agit sur la défense du personnage attaqué.

    En cas d'égalité d'initiative, les deux attaques portent.

  2. Bonus : proposer d'autres personnages pour nourrir le dictionnaire et rendre la suite plus distrayante.

Code de déblocage de la correction :

chaîne de caractères

Ecrire une fonction supp_lettre(phrase,car) qui prend en arguments phrase et car qui sont de type str

Cette fonction revoie phrase dans laquelle car a été supprimé.

Liste des tests :


assert supp_lettre("élémentaire","e")=="élémntair"
assert supp_lettre("","i") == ""
        

Code de déblocage de la correction :

Récursivité

fonction récursive nombre_de_chiffres(n)

Ecrire une fonction récursive nombre_de_chiffres(n) qui prend un entier positif ou nul n en argument et renvoie son nombre de chiffres.

Par exemple, nombre_de_chiffres(12568) renvoie 5.

Code de déblocage de la correction :

fonction récursive est_trie(l) à compléter

Compléter la fonction récursive est_trie(l) qui prend une variable code typée list l en argument et renvoie un booléen qui indique si la liste est triée.


def est_croissant(l):
    if len(l)<=1 : 
        return ...
    elif .... :
        l = l[1:]
        return ........
    else :
        return False


def est_decroissant(l):
    if len(l)<=1 : 
        return True
    elif l[0] >=l[1] :
        l = l[1:]
        return .....
    else :
        return False
        
def est_trie(l):
    if len(l)<=1 : 
        return .....
    elif l[0] <=l[1] :
        l = l[1:]
        return .....
    elif l[0] >=l[1] :
        l = l[1:]
        return .....
    else :
        return .....

    
# La batterie de tests   
def test() :
    assert est_croissant([])==True , 'Erreur test vide'
    assert est_croissant([1])==True , 'Erreur test [1]'
    assert est_croissant([1,2])==True , 'Erreur test [1,2]'
    assert est_croissant([1,2,1])==False , 'Erreur test [1,2,1]'
    assert est_decroissant([])==True , 'Erreur test vide'
    assert est_decroissant([1])==True , 'Erreur test [1]'
    assert est_decroissant([1,1])==True , 'Erreur test [1,1]'
    assert est_decroissant([1,2,1])==False , 'Erreur test [1,2,1]'
    assert est_decroissant([13,2,1])==True , 'Erreur test [13,2,1]'
    assert est_trie([])==True , 'Erreur test vide'
    assert est_trie([1])==True , 'Erreur test [1]'
    assert est_trie([1,2])==True , 'Erreur test [1,2]'
    assert est_trie([1,2,1])==False , 'Erreur test [1,2,1]'
    assert est_trie([1,1])==True , 'Erreur test [1,1]'
    assert est_trie([13,2,1])==True , 'Erreur test [13,2,1]'
    
test()


Code de déblocage de la correction :

Tri insertion récursive

fonction récursive, tri, insertion
  1. Ecrire une fonction récursive insertion(lst, x, i) qui insère correctement x dans lsti est l'index de x. On lancement de la fonction les éléments d'index 0 à i-1 de lst sont triés.

    insertion([2,25,32,5,6,21],5,3) renvoie [2,5,25,32,6,21]

    Code de déblocage de la correction :

  2. Ecrire une fonction récursive tri_insertion_rec(lst,n) qui renvoie lst triée, n-1 est l'indice du dernier terme de la liste.

    Code de déblocage de la correction :

Interface, pile, file

fonction, papier, file

Ecrire une fonction en pseudo code qui permet de supprimer le troisième élément d'une file

Code de déblocage de la correction :

Structures de données, pile , papier , BAC , récursivité

Vu au bac.

Code de déblocage de la correction :

POO

POO

On considère la classe suivante :

class Personnage:                             
    """
    Un personnage du jeu vidéo              
    """

    def __init__(self, genre, name, age=0, pdv = 10, life=True):
        self.genre = genre                 
        self.name = name
        self.age = age
        self.pdv = pdv
        self.life = life
    
    
  1. Quel script écrire pour instancier un personnage nommé Galadriel, de genre féminin, d'âge 600 ans, disposant de 40 points de vie?

  2. Ecrire une méthode in_life(self) qui vérifie si un personnage est en vie en testant si ses points de vie sont au dessus de 0. La méthode définira le statut du personnage.

  3. Tester cette méthode sur Galadriel.

Code de déblocage de la correction :

Ecrire une classe Personnage qui possède trois attributs :

Instancier deux personnages de la classe Personnage :

Créer une fonction combat(perso1,perso2) qui renvoie le vainqueur entre perso1 et perso2 et qui modifie les pdv de chaque joueur

POO

On définit une classe Individu possédant plusieurs attributs : sexe, âge, hobby


class Individu:
    def __init__(self,sexe,age,ho):
        """
        sexe : str "M" ou "F" ou "autre"
        age:int
        ho:list
        """
        self.s=sexe
        self.a=age
        self.h=ho
    
    def estMasculin(self):
        """
        renvoie le booléen True si la méthode s'applique sur un individu féminin et False sinon.
        """
        return self.s=="M"
    
Lucie=Individu("F",17,["course à pied","foot","lecture"])

# Les tests à passer 
assert diffAge(Lucie,Bob) == 2
assert Lucie.estMasculin() == False
assert Lucie.nbHobby()==3
assert nb_Hobby(Lucie)==3

Code de déblocage de la correction :

Base de données

BDD , papier , BAC

Vu au bac.

Identifier le vocabulaire du cours sur les bases de données dans ce schéma relationnel

BDD , papier , BAC

Vu au bac.

BDD , papier , BAC

Vu au bac.

Pour vous aider et en guise de correction: Séance Capytale dédiée

Code de déblocage de la correction :

Arbres

arbre binaire , poo

On considère l’arbre binaire suivant :

Une implémentation de l’arbre binaire ci-dessus en langage Python a été réalisée à l’aide de la classe Nœud ci-dessous :

class Noeud:
    """ Noeud d'un arbre binaire"""
    def __init__(self,v,g=None,d=None):
        self.valeur=v
        self.gauche=g
        self.droite=d

L’objet représentant cet arbre binaire a été déclaré de la manière suivante :

mon_arbre = Noeud("B",Noeud("A"),Noeud("C",Noeud("D"),Noeud("E")))
  1. Que renvoie l’instruction mon_arbre.gauche.valeur ?
  2. Quelle instruction permet d’afficher la valeur de la feuille "D" de cet arbre ?
  3. Dessiner l’arbre a correspondant à la déclaration suivante :
    a = Noeud (5,Noeud(12,Noeud(4),Noeud(3)),Noeud(13,None,Noeud(29)))

Code de déblocage de la correction :

arbre binaire , poo

Le but de cet exercice est d’implémenter un arbre binaire en programmation objet.

Vous devez pour cela compléter la classe Noeud ci-dessous en respectant les contraintes suivantes :

Le construction __init__ est tel qu’un objet Noeud qui aura 3 attributs :

Si il n’y a pas de sous-arbre gauche ou droit, on indiquera la valeur None dans les attributs correspondants.

Dans la classe Noeud, vous devez compléter les trois méthodes suivante :

Exemple d’utilisation de la classe Noeud

En supposant la classe Noeud créée, voici comment l’arbre ci-dessus peut être implémenté :

Compléter le programme ci-dessous

class Noeud():
    """
    Implémentation d'un arbre binaire
    """
    def __init__(self,valeur):
        """
        Constructeur :
        valeur est une chaîne de caractères ou un nombre entier.
        """
        self.valeur = # À compléter
        self.gauche = # À compléter
        self.droit = # À compléter
    def cree_fils_gauche(self,fils_gauche):
        """
        fils_gauche est une chaîne de caractères ou un nombre entier qui sera rajouté comme fils gauche
        au noeud de l'arbre binaire sur lequel s'applique cette méthode.
        La valeur de ce fils rajouté est renvoyée par la méthode.
        """
        self.gauche = # À compléter
        return self.gauche
    def cree_fils_droit(self,fils_droit):
        self.droit = # À compléter
        return self.droit
    def est_feuille(self):
        """
        méthode renvoyant True si le noeud sur lequel s'applique la méthode est une feuille de l'arbre
        et False sinon.
        """
        # À compléter

Code de déblocage de la correction :

Licence Creative Commons
Les différents auteurs mettent l'ensemble du site à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International