40 KiB
40 KiB
In [ ]:
# Relevés des capteurs au réveil
TAUX_O2_NOMINAL = 21 # en pourcentage
PRESSION_NOMINALE = 101 # en kilopascals
In [ ]:
oxygene = 21
oxygene = oxygene - 4
pression = oxygene * 2
oxygene = 21
print(oxygene, pression)
# Ma prédiction :
In [ ]:
reserve_principale = [120, 80, 50]
reserve_secours = reserve_principale
reserve_secours.append(0)
print("principale :", reserve_principale)
print("secours :", reserve_secours)
# Ma prédiction :
In [ ]:
temp_interne = 18
temp_externe = -270
# --- échange (cassé) ---
temp_interne = temp_externe
temp_externe = temp_interne
# -----------------------
print(temp_interne, temp_externe)
In [ ]:
assert temp_interne == -270 and temp_externe == 18
print("OK. Échange réussi")
In [ ]:
litres_oxygene = 480
consommation_par_heure = 3
nb_membres = 4
autonomie_h = ... # à compléter
print("Autonomie :", autonomie_h, "heures")
In [ ]:
assert autonomie_h == 40, "Attendu 40, obtenu " + str(autonomie_h)
print("OK. Autonomie correcte : 40 h")
In [ ]:
releves = [21, 101, 18]
sauvegarde = ... # à compléter
releves.append(999)
print("releves :", releves)
print("sauvegarde:", sauvegarde)
In [ ]:
assert sauvegarde == [21, 101, 18]
assert releves == [21, 101, 18, 999]
print("OK. La sauvegarde est bien indépendante")
In [ ]:
SEUIL_CRITIQUE = 80
SEUIL_ALERTE = 95
In [ ]:
def niveau_pression(pression):
if pression < 80:
print("CRITIQUE")
else:
print("NOMINAL")
resultat = niveau_pression(45)
print("resultat vaut :", resultat)
# Ma prédiction :
In [ ]:
def niveau_pression(pression):
... # à compléter
In [ ]:
assert niveau_pression(45) == "CRITIQUE"
assert niveau_pression(79) == "CRITIQUE"
assert niveau_pression(80) == "ALERTE"
assert niveau_pression(94) == "ALERTE"
assert niveau_pression(95) == "NOMINAL"
assert niveau_pression(120) == "NOMINAL"
print("OK. Protocole de pression opérationnel")
In [ ]:
compteur_alertes = 0
def signaler_alerte():
compteur_alertes = compteur_alertes + 1
return compteur_alertes
print(signaler_alerte())
# Ma prédiction (quelle erreur, et pourquoi ?) :
In [ ]:
def signaler_alerte(compteur):
... # à compléter
compteur_alertes = 0
compteur_alertes = signaler_alerte(compteur_alertes)
compteur_alertes = signaler_alerte(compteur_alertes)
print(compteur_alertes)
In [ ]:
assert signaler_alerte(0) == 1
assert signaler_alerte(41) == 42
assert compteur_alertes == 2
print("OK. Compteur d'alertes réparé")
In [ ]:
def diagnostic(pression, temperature):
... # à compléter
In [ ]:
assert diagnostic(101, 18) == "Pression NOMINAL / Temperature 18"
assert diagnostic(45, -3) == "Pression CRITIQUE / Temperature -3"
assert diagnostic(88, 0) == "Pression ALERTE / Temperature 0"
print("OK. Diagnostic complet opérationnel")
In [ ]:
def verrouiller(module, code_acces="0000"):
... # à compléter
In [ ]:
assert verrouiller("Sas") == "MODULE VERROUILLE"
assert verrouiller("Sas", "0000") == "MODULE VERROUILLE"
assert verrouiller("Sas", "1234") == "CODE REFUSE"
print("OK. Verrouillage opérationnel")
In [ ]:
mesures = [12, 45, 7, 88, 23, 91, 4]
In [ ]:
i = 0
while i < 5:
print(i)
i = i + 2
print("fin, i vaut", i)
# Ma prédiction :
In [ ]:
# Ma réponse :
In [ ]:
for i in range(1, len(mesures)):
print("capteur", i, ":", mesures[i])
In [ ]:
def maximum(valeurs):
... # à compléter
In [ ]:
assert maximum([12, 45, 7, 88, 23, 91, 4]) == 91
assert maximum([5]) == 5
assert maximum([3, 3, 3]) == 3
assert maximum([-10, -3, -50]) == -3, "attention aux valeurs négatives : ne partez pas de 0"
print("OK. Détection du maximum opérationnelle")
In [ ]:
def premier_defaillant(valeurs, seuil):
... # à compléter
In [ ]:
assert premier_defaillant([12, 45, 7, 88], 20) == 0
assert premier_defaillant([45, 88, 7, 4], 10) == 2
assert premier_defaillant([45, 88, 91], 10) == -1
assert premier_defaillant([], 10) == -1
print("OK. Détection de défaillance opérationnelle")
In [ ]:
def somme_jusqu_a_sentinelle(flux):
... # à compléter
In [ ]:
assert somme_jusqu_a_sentinelle([10, 20, 30, -1, 999, 999]) == 60
assert somme_jusqu_a_sentinelle([-1, 5, 5]) == 0
assert somme_jusqu_a_sentinelle([1, 2, 3]) == 6
assert somme_jusqu_a_sentinelle([]) == 0
print("OK. Lecture du flux opérationnelle")
In [ ]:
soute = ["eau", "vivres", "outils", "piles", "filtres"]
# Chaque sous-liste est un rayonnage : [rayon_0, rayon_1, rayon_2]
# Chaque ligne = un étage de la soute.
stock = [[12, 5, 0],
[3, 8, 7],
[0, 0, 4],
[9, 1, 2]]
In [ ]:
print(soute[0])
print(soute[-1])
print(soute[1:3])
print(len(soute[1:3]))
# Ma prédiction :
In [ ]:
soute_test = ["piles", "pinces", "eau", "outils"]
for objet in soute_test:
if objet[0] == "p":
soute_test.remove(objet)
print(soute_test) # devrait afficher ['eau', 'outils']
In [ ]:
assert soute_test == ["eau", "outils"]
print("OK. Purge de la soute correcte")
In [ ]:
def total_rayon(grille, r):
... # à compléter
In [ ]:
assert total_rayon(stock, 0) == 24
assert total_rayon(stock, 1) == 14
assert total_rayon(stock, 2) == 13
print("OK. Inventaire par rayon opérationnel")
In [ ]:
def au_dessus(valeurs, seuil):
... # à compléter (une seule ligne, avec une compréhension)
In [ ]:
assert au_dessus([12, 45, 7, 88, 23], 20) == [45, 88, 23]
assert au_dessus([1, 2, 3], 10) == []
assert au_dessus([], 0) == []
print("OK. Filtrage opérationnel")
In [ ]:
def fusion(a, b):
... # à compléter
In [ ]:
assert fusion([1, 4, 9], [2, 3, 10]) == [1, 2, 3, 4, 9, 10]
assert fusion([], [2, 3]) == [2, 3]
assert fusion([5], []) == [5]
assert fusion([1, 1], [1]) == [1, 1, 1]
print("OK. Fusion opérationnelle, vous venez d'écrire la moitié d'un tri fusion")
In [ ]:
equipage = {
"Kowalski": "pilote",
"Ndiaye": "medecin",
"Reyes": "ingenieur",
"Sokolova": "pilote",
"Tanaka": "ingenieur",
}
# Plan de la station : à chaque module, la liste des modules directement accessibles
plan = {
"Sas": ["Couloir"],
"Couloir": ["Sas", "Cockpit", "Soute", "Labo"],
"Cockpit": ["Couloir"],
"Soute": ["Couloir", "Reacteur"],
"Labo": ["Couloir"],
"Reacteur": ["Soute"],
}
In [ ]:
print(equipage["Reyes"])
print(len(equipage))
print("Bowman" in equipage)
# print(equipage["Bowman"])
# Ma prédiction :
In [ ]:
def poste_de(registre, nom):
return registre[nom]
print(poste_de(equipage, "Tanaka"))
print(poste_de(equipage, "Bowman")) # plante
In [ ]:
assert poste_de(equipage, "Tanaka") == "ingenieur"
assert poste_de(equipage, "Bowman") == "inconnu"
print("OK. Registre sécurisé")
In [ ]:
def compter_postes(registre):
... # à compléter
In [ ]:
resultat = compter_postes(equipage)
assert resultat == {"pilote": 2, "medecin": 1, "ingenieur": 2}
assert compter_postes({}) == {}
assert compter_postes({"A": "pilote"}) == {"pilote": 1}
print("OK. Recensement de l'équipage opérationnel")
In [ ]:
def voisins(plan, module):
... # à compléter
def nb_liaisons(plan):
... # à compléter
In [ ]:
assert voisins(plan, "Cockpit") == ["Couloir"]
assert voisins(plan, "Couloir") == ["Sas", "Cockpit", "Soute", "Labo"]
assert voisins(plan, "Hangar") == []
assert nb_liaisons(plan) == 10
print("OK. Lecture du plan opérationnelle")
In [ ]:
def par_poste(registre):
... # à compléter
In [ ]:
attendu = {"pilote": ["Kowalski", "Sokolova"],
"medecin": ["Ndiaye"],
"ingenieur": ["Reyes", "Tanaka"]}
assert par_poste(equipage) == attendu
assert par_poste({}) == {}
print("OK. Regroupement opérationnel")
In [ ]:
plan = {
"Sas": ["Couloir"],
"Couloir": ["Sas", "Cockpit", "Soute", "Labo"],
"Cockpit": ["Couloir"],
"Soute": ["Couloir", "Reacteur"],
"Labo": ["Couloir"],
"Reacteur": ["Soute"],
"Serre": ["Cellule"], # compartiment isolé du reste !
"Cellule": ["Serre"],
}
In [ ]:
def atteignables(plan, depart):
... # à compléter
In [ ]:
r = atteignables(plan, "Sas")
assert sorted(r) == ["Cockpit", "Couloir", "Labo", "Reacteur", "Sas", "Soute"]
assert "Serre" not in r, "La serre ne doit PAS être atteignable depuis le sas"
assert sorted(atteignables(plan, "Serre")) == ["Cellule", "Serre"]
assert atteignables(plan, "Hangar") == ["Hangar"]
print("OK. Cartographie terminée, 2 compartiments isolés détectés : Serre et Cellule")
In [ ]:
def compte_a_rebours(n):
if n == 0:
print("DECOLLAGE")
else:
print(n)
compte_a_rebours(n - 1)
print("verif", n)
compte_a_rebours(3)
# Ma prédiction :