Maths & NSI

Baccalauréat — Épreuve pratique — 2024 — NSI

Épreuve pratique NSI 2024 — Sujet 12 : tri par sélection, jeu du plus ou moins

Sujet

Épreuve pratique de NSI, session 2024 — sujet n°12 de la banque nationale. Durée : 1 heure, sur ordinateur. Le candidat traite les deux exercices, notés chacun sur 10 points.

Exercice 1 — écrire un tri par sélection

Écrire une fonction tri_selection qui prend en paramètre un tableau tab de nombres entiers (type list) et qui le modifie afin qu'il soit trié par ordre croissant. On utilisera l'algorithme suivant :

  • on recherche le plus petit élément du tableau, en le parcourant du rang 0 au dernier rang, et on l'échange avec l'élément d'indice 0 ;
  • on recherche ensuite le plus petit élément du tableau restreint du rang 1 au dernier rang, et on l'échange avec l'élément d'indice 1 ;
  • on continue de cette façon jusqu'à ce que le tableau soit entièrement trié.

Exemple :

>>> tab = [1, 52, 6, -9, 12]
>>> tri_selection(tab)
>>> tab
[-9, 1, 6, 12, 52]

Exercice 2 — jeu du plus ou moins

Le jeu du « plus ou moins » consiste à deviner un nombre entier choisi entre 1 et 99. Une élève de NSI décide de le coder en langage Python de la manière suivante :

  • le programme génère un nombre entier aléatoire compris entre 1 et 99 ;
  • si la proposition de l'utilisatrice est plus petite que le nombre cherché, l'utilisatrice en est avertie ; elle peut alors en tester un autre ;
  • si la proposition de l'utilisatrice est plus grande que le nombre cherché, l'utilisatrice en est avertie ; elle peut alors en tester un autre ;
  • si l'utilisatrice trouve le bon nombre en 10 essais ou moins, elle gagne ;
  • si l'utilisatrice a fait plus de 10 essais sans trouver le bon nombre, elle perd.

La fonction randint est utilisée : si a et b sont des entiers tels que a <= b, randint(a, b) renvoie un nombre entier compris entre a et b inclus.

Compléter le code ci-dessous et le tester :

from random import randint
 
def plus_ou_moins():
    nb_mystere = randint(1, ...)
    nb_test = int(input("Proposez un nombre entre 1 et 99 : "))
    compteur = ...
 
    while nb_mystere != ... and compteur < ...:
        compteur = compteur + 1
        if nb_mystere ... nb_test:
            nb_test = int(input("Trop petit ! Testez encore : "))
        else:
            nb_test = int(input("Trop grand ! Testez encore : "))
 
    if nb_mystere == nb_test:
        print ("Bravo ! Le nombre était ", ...)
        print("Nombre d'essais: ", ...)
    else:
        print ("Perdu ! Le nombre était ", ...)

Corrigé

Corrigé réservé aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.

Sujet officiel de la banque nationale de sujets 2024 de l'épreuve pratique de NSI (ministère de l'Éducation nationale). Corrigé rédigé pour ce site.