Construire et utiliser ses doctest

TL;DR

Une fois vos doctest écrits, ajouter ceci à la fin de vos déclarations de fonction :

import doctest
doctest.testmod()

Et lancer votre code.

Une absence de message signifie que les tests sont bons.

Ne pas laisser ces deux lignes dans les codes soumis sur FranceIOI, la version de Python y est un peu ancienne.

Plus en détail

Pour résoudre un problème, on partagera souvent le travail en trois parties :

Le cœur du problème étant le traitement, pour lequel on écrit une fonction, et que l'on documente avec des tests. Tout ça grâce à doctest.

Principe du test

On écrit le comportement attendu en cas d'utilisation de la fonction dans une console.

Exemples

def indice_lettre_minuscule(lettre: str) -> int:
    """Renvoie l'indice d'une lettre minuscule de l'alphabet.

    >>> indice_lettre_minuscule('a')
    0

    >>> indice_lettre_minuscule('z')
    25

    """
    if len(lettre) != 1:
        raise ValueError("`lettre` doit avoir **un seul** caractère")    
    if not('a' <= lettre <= 'z'):
        raise ValueError("`lettre` doit être en minuscule")

    return ord(lettre) - ord('a')

def lettre_minuscule(indice: int) -> str:
    """Renvoie la lettre minuscule dont `indice` est donné.

    >>> lettre_minuscule(0)
    'a'

    >>> lettre_minuscule(25)
    'z'

    """
    if not(0 <= indice < 26):
        raise ValueError("`indice` doit être de 0 inclus à 26 exclu")
    return chr(ord('a') + indice)

import doctest
doctest.testmod()

# ... suite de votre programme
# * lecture de l'entrée
# * utilisation des fonctions
# * écriture de la sortie

Entraînez-vous à faire un doctest pour chaque fonction simple. Il doit être court, et essayer de déjouer des pièges possibles...

Pour aller plus loin

⚠️ On remarquera qu'en console, si la sortie attendue est de type str, elle est écrite entre guillemets simples ' ; vous devez en faire autant dans le doctest, exactement comme si c'était une utilisation en console Python.

Et bien sûr, lire en détail la documentation