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, [])