Aller au contenu

Ep 28

le document

l'algorithme

Issue de : 23-NSI-39⚓

EXERCICE 1⚓

On s’intĂ©resse Ă  la suite d’entiers dĂ©finie par :

  • les deux premiers termes sont Ă©gaux Ă  1,
  • ensuite, chaque terme est obtenu en faisant la somme des deux termes qui le prĂ©cĂšdent.

La troisiĂšme valeur est donc \(1+1=2\), la quatriĂšme est \(1+2=3\), la cinquiĂšme est \(2+3=5\), la sixiĂšme est \(3+5=8\), et ainsi de suite.

Cette suite est connue sous le nom de suite de Fibonacci.

Écrire en Python une fonction fibonacci qui prend en paramĂštre un entier n supposĂ© strictement positif et qui renvoie le terme d’indice n de cette suite.

Exemples :

🐍 Script Python
>>> fibonacci(1)
1
>>> fibonacci(2)
1
>>> fibonacci(25)
75025
RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def fibonacci1(n):bksl-nl if n == 1 :bksl-nl return 1 bksl-nl elif n == 1 :bksl-nl return 1bksl-nl else :bksl-nl return fibonacci1(n-1) + fibonacci1(n-2)bksl-nlbksl-nl# oubksl-nlbksl-nldef fibonacci2(n):bksl-nl a = 1bksl-nl b = 1bksl-nl for k in range(n-2):bksl-nl t = bbksl-nl b = a + bbksl-nl a = tbksl-nl return bbksl-nlbksl-nl# oubksl-nlbksl-nldef fibonacci(n):bksl-nl d = {}bksl-nl d[1] = 1bksl-nl d[2] = 1bksl-nl for k in range(3, n+1):bksl-nl d[k] = d[k-1] + d[k-2]bksl-nl return d[n]bksl-nlbksl-nltry:bksl-nl assert fibonacci(1) == 1bksl-nl assert fibonacci(2) == 1bksl-nl assert fibonacci(25) == 75025bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl



EXERCICE 2⚓

On considĂšre la fonction eleves_du_mois prenant en paramĂštres eleves et notes deux tableaux de mĂȘme longueur, le premier contenant le nom des Ă©lĂšves et le second, des entiers positifs dĂ©signant leur note Ă  un contrĂŽle de sorte que eleves[i] a obtenu la note notes[i].

Cette fonction renvoie le couple constitué de la note maximale attribuée et des noms des élÚves ayant obtenu cette note regroupés dans un tableau.

Ainsi, l’instruction eleves_du_mois(['a', 'b', 'c', 'd'], [15, 18, 12, 18]) renvoie le couple (18, ['b', 'd'])

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def eleves_du_mois(eleves, notes):
    note_maxi = 0
    meilleurs_eleves = ... 

    for i in range(...): 
        if notes[i] == ...: 
            meilleurs_eleves.append(...) 
        elif notes[i] > note_maxi:
            note_maxi = ... 
            meilleurs_eleves = [...] 

    return (note_maxi, meilleurs_eleves)
RĂ©ponse

Complétez le code ci-dessous

###
def elevespy-unddupy-undmois(eleves, notes):bksl-nl notepy-undmaxi = 0bksl-nl meilleurspy-undeleves = ... bksl-nlbksl-nl for i in range(...): bksl-nl if notes[i] == ...: bksl-nl meilleurspy-undeleves.append(...) bksl-nl elif notes[i] > notepy-undmaxi:bksl-nl notepy-undmaxi = ... bksl-nl meilleurspy-undeleves = [...] bksl-nlbksl-nl return (notepy-undmaxi, meilleurspy-undeleves)bksl-nlbksl-nl



Solution

###
def elevespy-unddupy-undmois(eleves, notes):bksl-nl notepy-undmaxi = 0bksl-nl meilleurspy-undeleves = []bksl-nlbksl-nl for i in range(len(eleves)) :bksl-nl if notes[i] == notepy-undmaxi :bksl-nl meilleurspy-undeleves.append(eleves[i])bksl-nl elif notes[i] > notepy-undmaxi:bksl-nl notepy-undmaxi = notes[i]bksl-nl meilleurspy-undeleves = [eleves[i]]bksl-nlbksl-nl return (notepy-undmaxi, meilleurspy-undeleves)bksl-nlbksl-nltry:bksl-nl elevespy-undnsi = ['a','b','c','d','e','f','g','h','i','j']bksl-nl notespy-undnsi = [30, 40, 80, 60, 58, 80, 75, 80, 60, 24]bksl-nl assert elevespy-unddupy-undmois(elevespy-undnsi, notespy-undnsi) == (80, ['c', 'f', 'h'])bksl-nl assert elevespy-unddupy-undmois([],[]) == (0, [])bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl



Exemple :

🐍 Script Python
>>> eleves_nsi = ['a','b','c','d','e','f','g','h','i','j']
>>> notes_nsi = [30, 40, 80, 60, 58, 80, 75, 80, 60, 24]
>>> eleves_du_mois(eleves_nsi, notes_nsi)
(80, ['c', 'f', 'h'])
>>> eleves_du_mois([],[])
(0, [])