Adloun

Voici une fonction et sa documentation

Application directe du cours · niveau 1 (application) · NSI (première), chapitre 11 — Conduire un projet · Spécifier et documenter

Énoncé

Voici une fonction et sa documentation.


def prochain_joueur(g):
    """Renvoie le joueur qui doit jouer. Marche a tous les coups."""
    return "X" if sum(l.count(".") for l in g) % 2 == 1 else "O"

La docstring est malhonnête sur deux points. Lesquels ? La récrire.

Corrigé

Les deux défauts.

La version honnête.


def prochain_joueur(g):
    """Renvoie "X" ou "O", le joueur dont c'est le tour.

    Precondition : g est une grille 3x3 de "X", "O" et "." ; la
    partie a commence par X ; les coups ont alterne.
    Ne verifie pas que la partie est encore en cours : sur une
    grille deja gagnee, renvoie tout de meme un joueur.
    """
    assert len(g) == 3 and all(len(ligne) == 3 for ligne in g)
    return "X" if sum(l.count(".") for l in g) % 2 == 1 else "O"

La dernière phrase est celle qui coûte le plus à écrire, et c'est la plus utile : elle énonce ce que la fonction ne fait pas. C'est la même exigence que « dire les limites » à l'oral, et que la quatrième ligne de la fiche de spécification — trois formes d'une seule discipline : ne promettez que ce que vous garantissez.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.