Évaluation pratique n°1 bis
Les bases de Python
25 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.
# ===============================================================
# ENTRAÎNEMENT NSI : Les fondamentaux de Python
# Complétez le code aux endroits marqués par 🛑
# Pensez à tester régulièrement votre code !
# ===============================================================
import random
liste_heros = ["Guerrier", "Mage", "Voleur", "Paladin", "Chasseur", "Druide"]
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 1 : Saisie, calcul et affichage
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("−−− Question 1 −−−")
# Demandez à l'utilisateur une distance en kilomètres (nombre entier).
# Stockez-la dans une variable 'km'.
# Puis affichez dans la console le message :
# "Cela correspond à ... mètres." (en calculant la valeur : 1 km = 1000 m).
# Utilisez une f-string.
# 🛑 À compléter
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 2 : Parcours de chaîne et condition (drapeau)
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("\n−−− Question 2 −−−")
# On tire au sort un héros dans la liste.
# Complétez la boucle for pour que la variable 'contient_e' devienne True
# si le nom du héros contient la lettre 'e' (minuscule).
# Sinon, elle doit rester False.
heros = random.choice(liste_heros)
contient_e = False
for lettre in heros:
pass # 🛑 Remplacer par le code nécessaire
print(f"'{heros}' contient la lettre 'e' : {contient_e}")
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 3 : Boucle while (simulation de tirages)
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("\n−−− Question 3 −−−")
# On simule le tirage d'un nombre aléatoire entre 1 et 20 (dé à 20 faces).
# Écrivez une boucle while qui relance le dé (random.randint(1, 20))
# TANT QUE le résultat est strictement inférieur à 18.
# Comptez le nombre de tentatives nécessaires et affichez le résultat.
de = 0
nb_tentatives = 0
# 🛑 À compléter
print(f"Score >= 18 ({de}) obtenu en {nb_tentatives} tentative(s).")
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 4 : Fonction d'accumulation (compteur)
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("\n−−− Question 4 −−−")
# Définissez une fonction compter_lettre(texte, lettre_cible) qui :
# - prend en paramètres une chaîne 'texte' et un caractère 'lettre_cible'
# - RENVOIE (avec return, pas de print !) le nombre de fois où cette lettre apparaît.
def compter_lettre(texte, lettre_cible):
pass # 🛑 À remplacer
# --- Tests automatiques (ne rien modifier) ---
print(f"Nombre de 'a' dans 'ananas' : {compter_lettre('ananas', 'a')} (attendu : 3)")
print(f"Nombre de 'z' dans 'informatique' : {compter_lettre('informatique', 'z')} (attendu : 0)")
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 5 : Fonction avec condition (règle de calcul)
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("\n−−− Question 5 −−−")
# Définissez une fonction tarif_cinema(age) qui :
# - RENVOIE 6 si age < 14 (tarif enfant)
# - RENVOIE 8 si 14 <= age < 18 (tarif jeune)
# - RENVOIE 11 sinon (tarif plein)
# (Attention : utilisez return, aucun print dans la fonction !)
def tarif_cinema(age):
pass # 🛑 À remplacer
# --- Tests automatiques (ne rien modifier) ---
print(f"tarif_cinema(10) = {tarif_cinema(10)} € (attendu : 6 €)")
print(f"tarif_cinema(16) = {tarif_cinema(16)} € (attendu : 8 €)")
print(f"tarif_cinema(25) = {tarif_cinema(25)} € (attendu : 11 €)")