Physique-Chimie & NSI

Cours complets et originaux de Physique-Chimie & NSI

Évaluation pratique n°1 ter
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.


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

import random

liste_serveurs = ["Serveur-Alpha", "Node-01", "Gateway", "Backup-Server", "Mainframe", "Router"]

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 1 : Saisie, calcul et affichage
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("−−− Question 1 −−−")
# Demandez à l'utilisateur un nombre de jetons d'arcade (entier).
# Chaque jeton coûte 2 euros.
# Stockez la saisie dans 'nb_jetons', calculez le prix total,
# puis affichez exactement :
# "Pour ... jetons, vous devez payer ... euros."
# (Utilisez une f-string)

# 🛑 À compléter


# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 2 : Parcours de chaîne et condition
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("\n−−− Question 2 −−−")
# Un nom de machine est tiré au sort dans la liste.
# Complétez la boucle for pour que 'contient_tiret' devienne True
# si le nom de la machine contient le caractère "-" (tiret).
# Sinon, la variable doit rester False.

machine = random.choice(liste_serveurs)
contient_tiret = False

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

print(f"'{machine}' contient un tiret : {contient_tiret}")


# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 3 : Boucle while (simulation de combat)
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("\n−−− Question 3 −−−")
# Un monstre possède 35 points de vie (PV).
# À chaque coup, le joueur inflige entre 4 et 10 dégâts : random.randint(4, 10).
# Écrivez une boucle while qui applique des dégâts TANT QUE pv > 0.
# Comptez et affichez le nombre de coups nécessaires pour vaincre le monstre.

pv = 35
nb_coups = 0

# 🛑 À compléter

print(f"Monstre vaincu en {nb_coups} coup(s) (PV restants : {pv}).")


# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 4 : Fonction avec boucle d'accumulation
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("\n−−− Question 4 −−−")
# Définissez une fonction somme_jusqu_a(n) qui :
# - prend en paramètre un entier positif 'n'
# - calcule et RENVOIE la somme 1 + 2 + 3 + ... + n (avec return, pas de print !)
# (Indice : utilisez une variable 'total = 0' et une boucle 'for i in range(1, n + 1):')

def somme_jusqu_a(n):
    pass # 🛑 À remplacer

# --- Tests automatiques (ne rien modifier) ---
print(f"somme_jusqu_a(3) = {somme_jusqu_a(3)} (attendu : 6)")
print(f"somme_jusqu_a(5) = {somme_jusqu_a(5)} (attendu : 15)")
print(f"somme_jusqu_a(1) = {somme_jusqu_a(1)} (attendu : 1)")


# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
# Question 5 : Fonction de classification (if / elif / else)
# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
print("\n−−− Question 5 −−−")
# Définissez une fonction statut_joueur(pv) qui :
# - RENVOIE "KO" si pv <= 0
# - RENVOIE "Critique" si 0 < pv <= 20
# - RENVOIE "En forme" sinon (pv > 20)
# (Attention : utilisez return, aucun print dans la fonction !)

def statut_joueur(pv):
    pass # 🛑 À remplacer

# --- Tests automatiques (ne rien modifier) ---
print(f"statut_joueur(0) = '{statut_joueur(0)}' (attendu : 'KO')")
print(f"statut_joueur(12) = '{statut_joueur(12)}' (attendu : 'Critique')")
print(f"statut_joueur(45) = '{statut_joueur(45)}' (attendu : 'En forme')")