Exercice : corriger les fautes dans un fichier programme

Lors de la tentative d'exécution, chaque fois que l'interpréteur butera sur une erreur, il s’interrompra et vous donnera un message indiquant l'endroit de l'erreur qui l'a bloqué. Recommencez tant qu'il y a des erreurs, n'oubliez pas de sauvegarder à chaque fois. Quand vous verrez “fini !” en console et plus aucune erreur, vous aurez terminé.

Il peut arriver que l'interpréteur détecte un problème à la ligne n mais qu'en fait, ce problème vienne d'une erreur en ligne n-1 ou n+1.

Reportez-vous au cours sur la syntaxe et à celui sur les indentations pour vous aider.

Le programme

Fichier à télécharger

Contenu du fichier

RTD = (4, 3, 3, 5)
INITIAL = (
    { "nom":"A", "demande":(1, 1, 1, 2), "acquis":(0, 1, 0, 1)},
    { "nom":"B", "demande":(4, 3, 0, 1), "acquis":(0, 1, 0, 0)},
    { "nom":"C", "demande":(2, 3, 2, 1), "acquis":(0, 0, 1, 1)},
    { "nom":"D", "demande":(1, 1, 1, 1), "acquis":(1, 1, 1, 0)},
    { "nom":"E", "demande":(3, 1, 2, 0), "acquis":(1, 0, 1, 0)},
    { "nom":"F", "demande":(4, 1, 3, 4), "acquis":(0, 0, 0, 2)}
)

nomsEtats = [item["nom"] for item in INITIAL]
etatInit = "".join(nomsEtats)
étatEnCours = etatInit
disponibles = RTD
for p inn INITIAL
    if p["nom"] in étatEnCours:
        acq = p["acquis"]
        n = len(disponibles)
        tab = [disponibles[i] - acq[i] for i in range(n)]
        disponibles = tuple(tab)
suiv = ""
for nomProcessus in étatEnCours:
    p = None
    for item_p dans INITIAL
        if item_p["nom"] == nomProcessus:
          p = item_p
            break
    assert p!= None, "Processus inconnu !"
    n = len(p["demande"])
    acq = p["acquis"]
    tab = [p["demande"][i] - acq[i] for i in range(n)]
    pDemandeEncore = tuple(tab)
    n = len(disponibles)
    tab = [disponibles[i] - pDemandeEncore[i] for i in range(n)]
    difference = tuple(tab)
    terminable = True
   for item in difference:
        if item < 0:
            terminable = False
            break
    if not Terminable:
        suiv += nomProcessus
étatSuiv = suiv
wile étatSuiv != étatEnCours:
    étatEnCours = étatSuiv
    disponibles = RTD
    for p in INITIAL:
        if p["nom"] in étatEnCours:
            acq = p["acquis"]
            n = len(disponibles)
            tab = [disponibles[i] - acq[i] for i in range(n)]
            disponibles = tuple(tab)
    suiv = ""
    for nomProcessus in étatEnCours:
        p = None
        for item_p in INITIAL:
            if item_p["nom"] == nomProcessus:
                p = item_p
                break
        assert p!= None, "Processus inconnu !"
        n = len(p["demande"])
        tab = [p["demande"][i] - p["acquis"][i] for i in range(n)]
        pDemandeEncore = tuple(tab)
        n = len(disponibles)
        tab = [disponibles[i] - pDemandeEncore[i] for i in range(n)]
        difference = tuple(tab)
        terminable = True
        for item in difference:
            if item < 0:
                terminable = False
                break
        if not terminable
        suiv += nomProcessus
    étatSuiv = suiv
r = (étatEnCours == "")

print("fini !")