Chapitre 8

Chapitre 8

8.1 Opérations sur les chaînes de caractères

1.
a. Puisque la valeur ASCII de a est inférieure à la valeur ASCII de b, la sortie pour "aaa" < "aab" est True.
2.
b. Puisque "a" est plus courte que "aa" , et que le préfixe de "aa" de longueur 1 est égal au second opérande ( "a" ), la chaîne la plus courte est considérée comme plus petite. Par conséquent, "aa" < "a" s'évalue à False.
3.
c. Bien que tous les caractères de "aples" existent dans "apples" , les caractères ne sont pas consécutifs, la chaîne "aples" n'est donc pas une sous-chaîne de "apples" . Par conséquent, "aples" in "apples" renvoie False.
4.
a. "aBbA".lower() convertit tous les caractères en minuscules, et la sortie est "abba" .
5.
b. "aBbA".upper() convertit tous les caractères en majuscules, et la sortie est "ABBA" .
6.
a. La méthode upper() convertit "a" en majuscule ( "A" ). Lors de l'évaluation de "a".upper() == "A", la sortie est True.

8.2 Découpage de chaînes

1.
b. Puisque l'indexation commence à 0, le caractère à l'indice 1 est le deuxième caractère de la chaîne, c'est-à-dire "e" .
2.
b. Puisque l'indexation négative commence à -1 de droite à gauche dans la chaîne, "u" se trouve à l'indice -2.
3.
a. Le caractère "e" dans la chaîne "chance" a pour indice -1 (indexation négative) et 5 (indexation positive).
4.
b. a_string[2:4] est une tranche comprenant le troisième et le quatrième caractère, c'est-à-dire "ll" .
5.
b. La tranche [-3:-1] comprend les caractères aux indices -3 et -2, c'est-à-dire "oo" .
6.
b. La tranche de chaîne greeting[3:] est la sous-chaîne commençant à l'indice 3 jusqu'à la fin de la chaîne, c'est-à-dire "Leila" .
7.
b. Pour modifier le contenu d'une chaîne, une nouvelle variable doit être créée avec les modifications souhaitées.
8.
a. Tenter d'affecter une valeur à un indice ou à une plage d'indices dans une chaîne génère TypeError: 'str' object does not support item assignment.
9.
c. Le caractère à l'indice 1, "o" , remplace le contenu de la variable str . Ainsi, l'instruction print affiche "o" .

8.3 Recherche et test de chaînes

1.
c. Puisque "a" est une sous-chaîne de "an umbrella" , la sortie de "a" in "an umbrella" est True .
2.
b. "ab" n'est pas une sous-chaîne de "arbitrary" ; par conséquent, la sortie est False .
3.
a. Puisque "" est une sous-chaîne de longueur 0 pour "string" , la sortie est True .
4.
a. La boucle for itère sur les caractères de "string" et affiche tous les caractères sans aucun caractère de séparation.
5.
c. Le code donné itère sur les caractères de la chaîne "abca" , et chaque fois que le caractère "a" est rencontré, une variable de compteur est incrémentée de 1. Puisque "a" apparaît deux fois dans "abca" , la sortie sera 2 .
6.
c. Le code itère sur les caractères de "cab" et affiche l'équivalent en majuscule de chaque caractère. Par conséquent, la sortie est "CAB" .
7.
c. "aaa".count("a") renvoie 3 , ce qui correspond au nombre d'occurrences de "a" dans la chaîne "aaa" .
8.
a. Il n'y a aucune occurrence de "b" dans "weather" ; par conséquent, la sortie de "weather".count("b") est 0 .
9.
b. Deux sous-chaînes "aa" existent dans "aaa" , l'une commençant à l'indice 0 et l'autre commençant à l'indice 1.
10.
a. La méthode find() renvoie l'indice de la première occurrence de la sous-chaîne dans la chaîne donnée. L'indice de la première occurrence de "a" est 1.
11.
b. Puisque "c" n'est pas une sous-chaîne de "banana" , la méthode find() renvoie -1.
12.
a. Puisque "banana" n'est pas une sous-chaîne de "b" , -1 est renvoyé.
13.
a. La méthode index() renvoie l'indice du début de la première occurrence d'une sous-chaîne dans la chaîne donnée. L'indice de la première occurrence de "o" dans "school" est 3.
14.
c. La sous-chaîne "ooo" n'existe pas dans la chaîne "ooo" , la méthode index() renvoie donc une ValueError.
15.
a. sentence.index(" ") renvoie l'indice du premier caractère d'espace. L'instruction print affiche le préfixe de la phrase se terminant juste avant le premier espace, la sortie est donc "This" .

8.4 Formatage de chaînes

1.
c. "Ana" est substitué au champ de remplacement {} dans le modèle, et la sortie est donc "Hello Ana!" .
2.
b. Les deux arguments sont passés au modèle "{}:{}" , ce qui produit "One:1" .
3.
a. Les arguments de la fonction format() sont passés dans l'ordre et seront substitués aux champs de remplacement. Les arguments supplémentaires peuvent être ignorés par le modèle et rester inutilisés.
4.
c. "Bengio" est substitué dans le champ de remplacement nommé associé à la balise name ; par conséquent, la sortie est "Hey Bengio!" .
5.
b. Puisque le modèle de chaîne utilise un argument nommé, les entrées ne sont acceptées que via les clés correspondantes. Par conséquent, le code génère KeyError: 'name'.
6.
b. La variable greeting ayant la valeur "Hi" est substituée au champ de remplacement greeting. Il en va de même pour le champ de remplacement name et la variable name. La sortie est "Hi Jess" .
7.
b. Le modèle spécifie une longueur minimale de 12 pour le champ name, donc len(formatted_name) vaut 12 .
8.
c. Les spécifications d'alignement et de longueur de champ formatent le champ greeting pour qu'il ait une longueur de six caractères et soit aligné à droite. Par conséquent, la variable formatted_greeting prendra la valeur " Hello" , et le caractère 0 de la chaîne est un espace.
9.
c. La spécification de longueur de champ impose la longueur minimale de la chaîne. Les entrées plus longues que la longueur minimale spécifiée ne seront pas modifiées.
10.
c. La spécification de format .3 indique que la précision de la sortie doit être de trois décimales.
11.
a. La spécification {:1>3d} produit un nombre à 3 chiffres en sortie et, si l'argument fourni n'a pas trois chiffres, le nombre sera complété avec des 1 sur la gauche.
12.
b. {:+d} formate le nombre décimal en ajoutant le signe positif.

8.5 Découpage et jointure de chaînes

1.
b. Lorsque "1*2*3*" est découpée en sous-chaînes à l'aide du délimiteur '*' , la sortie est ["1", "2", "3"].
2.
c. Lorsque "a year includes 12 months" est découpée en sous-chaînes à l'aide des caractères d'espace, la liste ["a", "year", "includes", "12", "months"] est créée.
3.
b. Lors du découpage de la chaîne multiligne, la sortie est ['This', 'is', 'a', 'test'].
4.
c. Les éléments de la liste elements sont concaténés à l'aide d'une virgule, la sortie est donc 'A,beautiful,day,for,learning' .
5.
b. La sortie de "sss".join(["1","2"]) est "1sss2" , qui a une longueur de 5.
6.
b. Puisque le séparateur est une chaîne vide, les éléments de la liste seront concaténés sans séparateur et la sortie sera "12" .