Vous pouvez créer un compte pour regrouper, gérer et partager vos sujets.
lien secret
Ne pas partager ce lien
Il permet d'accéder à la console du devoir (sujet, lien pour les élèves, correction...).
code secret
rive
Ne pas partager ce code
Il permet de déverrouiller la copie d'un élève
lien à fournir aux élèves
 
[EXEMPLE 1] DEVOIR PROGRAMMES PYTHON
COPIES
SUJET
[Exemple 1] Programmes Python
**Programme 1** Compléter la fonction `puissance`. * La fonction prend en paramètres $a$ et $n$ avec $a$ et $n$ deux entiers positifs supérieurs ou égaux à zéro et renvoie $a^n$. * La fonction doit être une fonction récursive. * Indiquer dans le code, à l'aide de commentaires, la partie qui correspond à la condition d'arrêt et la partie qui correspond aux appels récursifs. **Programme 2** Compléter le code ci-dessous (dix `...` à compléter). Rappels: le 'slicing' ``` Soit L une liste L[1:] # sélection de tous les éléments sauf le premier (= suppression du premier élément) L[:2] # sélection des 2 premiers éléments L[-1] # sélection du dernier élément L[-3] # sélection du 3ème élément en partant de la fin L[-3:] # sélection des 3 derniers éléments L[1:3] # sélection de tous les éléments entre le 2ème (inclus) et le 4ème (exclu) ```
PROGRAMME 1
CODE ÉLÈVE
def puissance(a, n):
CODE ENSEIGNANT
# Jeu de tests assert puissance(10, 3) == 1000 assert puissance(2, 3) == 8 assert puissance(5, 0) == 1 assert puissance(0, 0) == 1 print(puissance(10, 3)) print(puissance(2, 3)) print(puissance(5, 0)) print(puissance(0, 0))
SOLUTION POSSIBLE
def puissance(a, n): # Condition d'arrêt (cas a^0 = 1) if n == 0: return 1 # Appels récursifs else: return a * puissance(a, n - 1) # Jeu de tests assert puissance(10, 3) == 1000 assert puissance(2, 3) == 8 assert puissance(5, 0) == 1 assert puissance(0, 0) == 1
PROGRAMME 2
CODE ÉLÈVE
def fusion(L1, L2): if L1 == [] or L2 == []: return ... if L1[0] <= L2[0]: return ... + fusion(L1[1:], L2) return [L2[0]] + ... def tri_fusion(liste): if len(liste) <= 1: return ... milieu = ... demi_liste1 = liste[...] demi_liste2 = liste[...] demi_liste1_triee = ... demi_liste2_triee = ... return ...(demi_liste1_triee, demi_liste2_triee)
CODE ENSEIGNANT
# Tests fonction tri_fusion assert(tri_fusion([7]) == [7]), "Test 1 non réussi" assert(tri_fusion([]) == []), "Test 2 non réussi" assert(tri_fusion([9, 7, 5, -4]) == [-4, 5, 7, 9]), "Test 3 non réussi" assert(tri_fusion([9, 2, 14, -4]) == [-4, 2, 9, 14]), "Test 4 non réussi" assert(tri_fusion([4, 7, 14, 20]) == [4, 7, 14, 20]), "Test 5 non réussi" print(tri_fusion([5, 8, 12, 1])) # [1, 5, 8, 12]
SOLUTION POSSIBLE
def fusion(L1, L2): if L1 == [] or L2 == []: return L1 + L2 if L1[0] <= L2[0]: return [L1[0]] + fusion(L1[1:], L2) return [L2[0]] + fusion(L1, L2[1:]) def tri_fusion(liste): if len(liste) <= 1: return liste milieu = len(liste) // 2 demi_liste1 = liste[:milieu] demi_liste2 = liste[milieu:] demi_liste1_triee = tri_fusion(demi_liste1) demi_liste2_triee = tri_fusion(demi_liste2) return fusion(demi_liste1_triee, demi_liste2_triee)