Physique-Chimie & NSI

Cours complets et originaux de Physique-Chimie & NSI

Évaluation pratique n°1 v4
Les bases de Python
20 minutes

Copier-coller l’intégralité de ce script dans votre IDE Python. Compléter le code manquant en vous aidant des commentaires.

Vous devez tester votre code avant que je ne corrige votre travail.

Votre script ne doit pas planter à la fin de l’épreuve. S’il plante, c’est zéro ! 🤓. Si vous n’arrivez pas à traiter une question, commentez-la pour la désactiver.


# ===============================================================
# ÉVALUATION NSI (Rattrapage E) : Les fondamentaux de Python
# Complétez le code aux endroits marqués par 🛑
# Pensez à tester régulièrement votre code !
# ===============================================================

import random

liste_creatures = ["Loup", "Serpent", "Aigle", "Scorpion", "Ours", "Requin"]

# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
# Question 1 : Saisie, calcul et affichage
# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
print("––– Question 1 –––")
# Demandez à l'utilisateur un nombre de clés de donjon (entier).
# Chaque clé coûte 4 pièces d'or.
# Stockez la saisie dans 'nb_cles', calculez le prix total,
# puis affichez exactement :
# "Pour ... clés, vous devez payer ... pièces d'or."
# (Utilisez une f-string)

# 🛑 À compléter


# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
# Question 2 : Parcours de chaîne et indicateur booléen
# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
print("\n––– Question 2 –––")
# Une créature est tirée au sort dans la liste.
# Complétez la boucle for pour que 'contient_r' devienne True
# si le nom de la créature contient la lettre 'r' (minuscule).
# Sinon, la variable doit rester False.

creature = random.choice(liste_creatures)
contient_r = False

for car in creature:
    pass # 🛑 Remplacer par le code nécessaire

print(f"'{creature}' contient la lettre 'r' : {contient_r}")


# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
# Question 3 : Boucle while (simulation d'escalade)
# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
print("\n––– Question 3 –––")
# Un aventurier grimpe une falaise de 50 mètres (altitude = 0 au départ).
# À chaque prise, il progresse de 6 à 14 mètres : random.randint(6, 14).
# Écrivez une boucle while qui le fait progresser TANT QUE altitude < 50.
# Comptez et affichez le nombre d'étapes nécessaires pour atteindre le sommet.

altitude = 0
nb_etapes = 0

# 🛑 À compléter

print(f"Sommet atteint ({altitude} m) en {nb_etapes} étape(s).")


# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
# Question 4 : Fonction avec boucle d'accumulation
# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
print("\n––– Question 4 –––")
# Définissez une fonction compter_occurrences(texte, cible) qui :
# - prend en paramètres une chaîne 'texte' et un caractère 'cible'
# - RENVOIE (avec return, pas de print !) le nombre de fois où 'cible' apparaît dans 'texte'.

def compter_occurrences(texte, cible):
    pass # 🛑 À remplacer

# --- Tests automatiques (ne rien modifier) ---
print(f"compter_occurrences('abracadabra', 'a') = {compter_occurrences('abracadabra', 'a')} (attendu : 5)")
print(f"compter_occurrences('informatique', 'z') = {compter_occurrences('informatique', 'z')} (attendu : 0)")
print(f"compter_occurrences('reussite', 'e') = {compter_occurrences('reussite', 'e')} (attendu : 2)")


# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
# Question 5 : Fonction de classification (if / elif / else)
# –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
print("\n––– Question 5 –––")
# Définissez une fonction niveau_batterie(pourcentage) qui :
# - RENVOIE "Plein" si pourcentage >= 80
# - RENVOIE "Moyen" si 30 <= pourcentage < 80
# - RENVOIE "Faible" sinon (pourcentage < 30)
# (Attention : utilisez return, aucun print dans la fonction !)

def niveau_batterie(pourcentage):
    pass # 🛑 À remplacer

# --- Tests automatiques (ne rien modifier) ---
print(f"niveau_batterie(95) = '{niveau_batterie(95)}' (attendu : 'Plein')")
print(f"niveau_batterie(50) = '{niveau_batterie(50)}' (attendu : 'Moyen')")
print(f"niveau_batterie(15) = '{niveau_batterie(15)}' (attendu : 'Faible')")