---
# System prepended metadata

title: Épreuve pratique session 2021 - Spécialité NSI

---

# Épreuve pratique session 2021 - Spécialité NSI
#### Académie de Normandie


---

Espace collaboratif dédié aux remarques et commentaires relatifs aux sujets de la banque.

URL officielle : https://eduscol.education.fr/2661/banque-des-epreuves-pratiques-de-specialite-nsi

Lien d'un collègue (Gilles Lassus) pour télécharger l'ensemble au format zip : 
https://github.com/glassus/nsi/raw/master/epreuve_pratique_2021.zip



---

## Sujet n°1 :
### ++Exercice 1++ :
Coquille orthographique en première ligne : paramètre++s++.

### ++Exercice 2++ :
9ème ligne : un underscore en trop à la fin du nom de la fonction 
`plus_courte_distance_`.

26e ligne : la fonction `plus_courte_distance` renvoie un *tuple* et non une liste :  
`assert plus_courte_distance([(7, 9), (2, 5), (5, 2)], (0, 0)) ==
(2, 5), "erreur"`


---
## Sujet n°2 :
### ++Exercice 1++ :

### ++Exercice 2++ :
---


---
## Sujet n°5 :
### ++Exercice 1++ :

Comment évaluer un élève qui propose ce code ? 

```
def convertir(T):
    ch = ""
    for element in T :
        ch = ch + str(element)
    return int(ch, 2)
```
   
Il a bien fait un parcours séquentiel comme demandé...

L'énoncé devrait demander de ne pas utiliser les puissances de 2 mais d'atteindre ce code : 
```
def convertir(T):
    nb = 0
    for bit in T :
        nb = 2*nb + bit
    return nb
```
>une réponse (personnelle) aux questions posées : pour l'avoir testé, tous les elèves ont utilisé des sommes de puissances de 2, et mon collègue NSI également. 
Attendre uniquement la 2e version suppose un niveau de connaissances qui ne me semble pas exigible en NSI (algorithme de Horner)
Quant à la 1ere version proposée, je ne l'ai pas vue, mais elle montre déjà des compétences. L'épreuve étant un oral, on peut chercher à valoriser la production en demandant à l'élève comment faire sans utiliser int(x, 2)...

### ++Exercice 2++ :
---
Le commentaire
```
    # le plus petit i tel que 0 <= i <= j et L[i-1] > L[j].
```
est quand même faux si i vaut 0...
    
---
## Sujet n°6 :
### ++Exercice 1++ :
assert rendu(89)==[17,2,1] Erreur
pour rendre 89, il faut bien 17 pièces de 5 et 2 pièces de 2
assert rendu(89)==[17,2,0]

### ++Exercice 2++ :
Erreur: 
class Maillon :
    def init(self,v,suivant) :
        self.valeur = v
        self.suivant = suivant

---
## Sujet n°11 :
### ++Exercice 1++ : 

Dans l'énoncé on demande de renvoyer une liste b (ainsi qu'un entier) et comme indication on propose `b=n%2`, belle peau de banane... (le + simple: nommer au début T la liste...)

Autre erreur : conv_bin(9) renvoie  ([1, 0, 0, 1], 4) et non  ([1, 0, 1, 1], 4)... à remplacer par conv_bin(11) pour garder une asymétrie dans la liste.

### ++Exercice 2++ :

Le tri à bulles n'étant pas au programme, il faudrait ajouter des exemples visuels des étapes de tri de l'algorithme. Il n'y a même pas d'exemple d'appel de la fonction...

---

## Sujet n°13 : relu et testé, a priori RAS
### ++Exercice 1++ :

### ++Exercice 2++ :
---


## Sujet n°23 :
### ++Exercice 1++ :
La définition donnée d'*occurrence* est incorrecte : 
> L’occurrence d’un caractère dans un[e] phrase est le nombre de fois où ce caractère est présent.

Non, une occurrence n'est pas un nombre.

La dernière phrase de l'énoncé est plus que confuse : 
> Cette fonction doit renvoyer un dictionnaire de type constitué des
 occurrences des caractères présents dans la phrase.  


### ++Exercice 2++ :

## Sujet n° 28 : 

### ++Exercice 1++ : 
L'implémentation choisie est celle des arbres n-aires, donc l'algorithme obtenu s'éloigne du programme et du principe récursif 

### ++Exercice 2++ : 

question 2: 
Il  faut remplacer la ligne `if tab[max] > ... :`
par `if tab[imax] > ... :`  

et corriger l'exemple... en permutant 12 et 18 dans la liste renvoyée...

---

## Sujet n°29 :
### ++Exercice 1++ : 
ligne 12 : remplacer n par k
> Écrire une fonction `calcul` prenant en paramètres un entier ~~n~~ k strictement positif et qui ... 


### ++Exercice 2++ :
---

