Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Licence CC BY-NC-ND Thierry Parmentelat & Arnaud Legout Inria - UCA

Exercice - niveau basique

Slicing

Commençons par créer une chaîne de caractères. Ne vous inquiétez pas si vous ne comprenez pas encore le code d’initialisation utilisé ci-dessous.

Pour les plus curieux, l’instruction import permet de charger dans votre programme une boîte à outils que l’on appelle un module. Python vient avec de nombreux modules qui forment la bibliothèque standard. Le plus difficile avec les modules de la bibliothèque standard est de savoir qu’ils existent. En effet, il y en a un grand nombre et bien souvent il existe un module pour faire ce que vous souhaitez.

Ici en particulier nous utilisons le module string.

# nous allons tirer profit ici d'une 
# constante définie dans le module string
import string
chaine = string.ascii_lowercase

# et voici sa valeur
print(chaine)
abcdefghijklmnopqrstuvwxyz

Pour chacune des sous-chaînes ci-dessous, écrire une expression de slicing sur chaine qui renvoie la sous-chaîne. La cellule de code doit retourner True.

Par exemple, pour obtenir “def” :

chaine[3:6] == "def"
The history saving thread hit an unexpected error (OperationalError('attempt to write a readonly database')).History will not be written to the database.
True
  1. Écrivez une slice pour obtenir “vwx” (n’hésitez pas à utiliser les indices négatifs) :

chaine[ <votre_code> ] == "vwx"
  Cell In[3], line 1
    chaine[ <votre_code> ] == "vwx"
            ^
SyntaxError: invalid syntax
  1. Une slice pour obtenir “wxyz” (avec une seule constante) :

chaine[ <votre_code> ] == "wxyz"
  Cell In[4], line 1
    chaine[ <votre_code> ] == "wxyz"
            ^
SyntaxError: invalid syntax
  1. Une slice pour obtenir “dfhjlnprtvxz” (avec deux constantes) :

chaine[ <votre_code> ] == "dfhjlnprtvxz"
  Cell In[5], line 1
    chaine[ <votre_code> ] == "dfhjlnprtvxz"
            ^
SyntaxError: invalid syntax
  1. Une slice pour obtenir “xurolifc” (avec deux constantes) :

chaine[ <votre_code> ] == "xurolifc"
  Cell In[6], line 1
    chaine[ <votre_code> ] == "xurolifc"
            ^
SyntaxError: invalid syntax

Exercice - niveau intermédiaire

Longueur

# il vous faut évaluer cette cellule magique
# pour charger l'exercice qui suit
# et autoévaluer votre réponse
from corrections.exo_inconnue import exo_inconnue

On vous donne une chaîne composite dont on sait qu’elle a été calculée à partir de deux chaînes inconnue et connue comme ceci :

composite = connue + inconnue + connue

On vous donne également la chaîne connue. Imaginez par exemple que vous avez (ce ne sont pas les vraies valeurs) :

connue = '0bf1'
composite = '0bf1a9730e150bf1'

alors, dans ce cas :

inconnue = 'a9730e15'

L’exercice consiste à écrire une fonction qui retourne la valeur de inconnue à partir de celles de composite et connue. Vous pouvez admettre que connue n’est pas vide, c’est-à-dire qu’elle contient au moins un caractère.

Vous pouvez utiliser du slicing, et la fonction len(), qui retourne la longueur d’une chaîne :

len('abcd')
4
# à vous de jouer
def inconnue(composite, connue):
    "votre code"

Une fois votre code évalué, vous pouvez évaluer la cellule suivante pour vérifier votre résultat.

# correction
exo_inconnue.correction(inconnue)
Loading...

Lorsque vous évaluez cette cellule, la correction vous montre :

Si toutes les lignes sont en vert c’est que vous avez réussi cet exercice.

Vous pouvez essayer autant de fois que vous voulez, mais il vous faut alors à chaque itération :