Merci à Adrien Ollier d’avoir proposé cet exercice
exercice - niveau intermédiaire¶
Le but de l’exercice est d’écrire la fonction spreadsheet
qui prend en entrée un entier - disons
indexet qui en sortie retourne le nom de la colonne correspondante dans un fichier Excel.
Pour rappel dans un tableur les colonnes sont appelées d’abord A jusque Z, puis on passe à AA, AB, et ainsi de suite jusque ZZ, puis AAA, etc etc..
La valeur d’entrée index = 0 est considérée comme non valide.
# voici quelques exemples charnière
from corrections.exo_spreadsheet import exo_spreadsheet
exo_spreadsheet.example()Pour vous aider, on rappelle l’existence des fonctions prédéfinies chr() et ord() qui permettent de passer des caractères Unicode à leur représentation numérique (codepoint) et vice-versa.
On vous invite également à envisager la progression suivante :
Exercice intermédiaire: Écrire la fonction qui prend les entiers de 0 à 25 et qui retourne les lettres de A à Z.
Écrire la fonction qui prend les entiers de 1 à 26 et qui retourne les lettres de A à Z. La valeur d’entrée index = 0 est considérée comme une erreur.
À partir de la fonction précédente, écrire la fonction spreadsheet() pour les indices commençant à 1 et allant au-delà de 26.
Remarquez que, contrairement à ce qu’on indiquait dans une version antérieure de cet énoncé, il ne s’agit pas exactement de faire une décomposition en base 26; les nombres “charnière”, c’est-à-dire ceux qui correspondent à un passage de Z* à A*, sont donnés - à 1 près - par la formule , avec ici
# écrivez votre code ici'
def spreadsheet(index):
...# et validez-le ici
exo_spreadsheet.correction(spreadsheet)