Python

Exemples Corrigés QCM Python – Concatenation de Chaînes de Caractères

Voici une série de questions à choix multiples (QCM) portant sur la concaténation de chaînes de caractères en Python, accompagnées de réponses détaillées et d’explications.


Question 1 : Concatenation avec l’opérateur +

Quel sera le résultat du code suivant ?

nom = "Alice"
age = 30
print(nom + " a " + age + " ans.")
  1. Alice a 30 ans.
  2. Erreur de syntaxe.
  3. Une erreur TypeError. ✅
  4. Rien n’est affiché.

Réponse : 3

La concaténation avec + ne fonctionne qu’avec des chaînes de caractères. Ici, age est un entier, ce qui provoque une TypeError.

Correction :

print(nom + " a " + str(age) + " ans.")  # Résultat : "Alice a 30 ans."

Question 2 : Utilisation de join()

Quel sera le résultat de ce code ?

mots = ["Python", "est", "formidable"]
phrase = " ".join(mots)
print(phrase)
  1. Une erreur TypeError.
  2. Python est formidable.
  3. Pythonestformidable.
  4. ['Python', 'est', 'formidable']

Réponse : 2

La méthode join() assemble les éléments de la liste en les séparant par le caractère spécifié (" " dans cet exemple).


Question 3 : F-Strings

Quel sera le résultat du code suivant ?

nom = "Bob"
ville = "Paris"
print(f"Bonjour, je suis {nom} et j'habite à {ville}.")
  1. Bonjour, je suis Bob et j'habite à Paris.
  2. Bonjour, je suis {nom} et j'habite à {ville}.
  3. Une erreur de syntaxe.
  4. Bonjour, je suis Bob et j'habite à Paris. (sans les guillemets)

Réponse : 1

Les f-strings permettent d’intégrer directement des variables dans une chaîne, avec une syntaxe lisible et concise.


Question 4 : Chaîne vide comme séparateur

Que retournera ce code ?

lettres = ["P", "y", "t", "h", "o", "n"]
resultat = "".join(lettres)
print(resultat)
  1. P y t h o n
  2. Python
  3. ['P', 'y', 't', 'h', 'o', 'n']
  4. Une erreur TypeError.

Réponse : 2

Un séparateur vide ("") signifie que les éléments de la liste seront joints sans espace entre eux.


Question 5 : Concaténation inefficace

Quel problème pourrait survenir avec ce code ?

mots = ["Python", "est", "rapide"]
resultat = ""
for mot in mots:
    resultat += mot + " "
print(resultat.strip())
  1. Le code est inefficace en termes de performances. ✅
  2. Une erreur TypeError sera levée.
  3. Le résultat sera incorrect.
  4. Une erreur de syntaxe.

Réponse : 1

Concaténer des chaînes dans une boucle avec += est inefficace, car une nouvelle chaîne est créée à chaque itération. Utilisez plutôt join() pour une meilleure performance.

Correction :

resultat = " ".join(mots)
print(resultat)  # Résultat : "Python est rapide"

Question 6 : Conversion de types

Quel sera le résultat du code suivant ?

elements = ["Python", 3, "est", "super"]
resultat = " ".join(elements)
print(resultat)
  1. Python 3 est super
  2. Une erreur TypeError. ✅
  3. ['Python', 3, 'est', 'super']
  4. Python est super (sans le chiffre 3)

Réponse : 2

Tous les éléments de l’itérable doivent être des chaînes pour utiliser join(). Ici, 3 est un entier, ce qui provoque une TypeError.

Correction :

resultat = " ".join(map(str, elements))
print(resultat)  # Résultat : "Python 3 est super"

Question 7 : Génération d’une Liste Numérotée

Quel sera le résultat de ce code ?

articles = ["Pommes", "Poires", "Bananes"]
resultat = "\n".join(f"{i + 1}. {article}" for i, article in enumerate(articles))
print(resultat)
  1. Une erreur de syntaxe.
  2. Une liste Python formatée.
  3. Une chaîne avec chaque article numéroté. ✅
  4. Rien n’est affiché.

Réponse : 3

Le code génère une chaîne avec chaque article numéroté, séparé par des retours à la ligne (\n).

Résultat :

1. Pommes
2. Poires
3. Bananes

Question 8 : Construction de Chemins

Quel est le résultat du code suivant ?

dossier = "/home/utilisateur"
sous_dossiers = ["documents", "projets", "python"]
chemin = "/".join([dossier] + sous_dossiers)
print(chemin)
  1. /home/utilisateur/documents/projets/python
  2. Une erreur TypeError.
  3. Une liste de dossiers formatée.
  4. Rien n’est affiché.

Réponse : 1

Le code concatène la liste des sous-dossiers avec le dossier racine, séparés par /.


Question 9 : Manipulation des Séparateurs

Quel sera le résultat du code suivant ?

lignes = ["ligne1", "ligne2", "ligne3"]
texte = "\n".join(lignes)
print(texte)
  1. ligne1ligne2ligne3
  2. Une erreur TypeError.
  3. Un texte séparé par des retours à la ligne. ✅
  4. Une erreur de syntaxe.

Réponse : 3

Chaque élément de la liste est joint avec un retour à la ligne (\n) comme séparateur.

Résultat :

ligne1
ligne2
ligne3

Question 10 : Ajout de Séparateurs Multiples

Quel est le problème potentiel de ce code ?

mots = ["Python", "", "est", "super"]
resultat = " ".join(mots)
print(resultat)
  1. Une erreur TypeError.
  2. Une chaîne correcte est générée.
  3. Des espaces superflus apparaissent. ✅
  4. Une erreur de syntaxe.

Réponse : 3

La chaîne contient des espaces supplémentaires à cause de l’élément vide dans la liste.

Correction : Filtrez les éléments vides avant d’utiliser join() :

resultat = " ".join(filter(None, mots))
print(resultat)  # Résultat : "Python est super"

Suite : QCM Python – Concatenation de Chaînes de Caractères

Voici une nouvelle série de QCM avancés pour approfondir vos connaissances sur la concaténation de chaînes en Python, avec des exemples plus complexes et des cas pratiques.


Question 11 : Utilisation d’une Fonction Lambda avec join()

Quel sera le résultat du code suivant ?

valeurs = [1, 2, 3, 4]
resultat = ", ".join(map(lambda x: f"#{x}", valeurs))
print(resultat)
  1. 1, 2, 3, 4
  2. #1, #2, #3, #4
  3. Une erreur TypeError.
  4. Une erreur de syntaxe.

Réponse : 2

La fonction lambda formate chaque élément de la liste valeurs en ajoutant un # devant. La méthode join() combine ensuite les éléments formatés avec , comme séparateur.


Question 12 : Chaînes Multi-lignes

Que retournera ce code ?

lignes = ["Python", "est", "génial"]
resultat = "\n".join(lignes)
print(resultat)
  1. Python est génial
  2. Python\nest\ngénial
  3. Une erreur TypeError.
  4. Chaque mot sera sur une ligne différente. ✅

Résultat :

Python
est
génial

Réponse : 4

La méthode join() utilise \n comme séparateur, plaçant chaque mot sur une nouvelle ligne.


Question 13 : join() avec des Dictionnaires

Quel sera le résultat du code suivant ?

data = {"nom": "Alice", "age": "30", "ville": "Paris"}
resultat = ", ".join(f"{cle}: {valeur}" for cle, valeur in data.items())
print(resultat)
  1. nom: Alice, age: 30, ville: Paris
  2. Une erreur TypeError.
  3. {'nom': 'Alice', 'age': '30', 'ville': 'Paris'}
  4. Alice, 30, Paris

Réponse : 1

La méthode join() assemble les paires clé-valeur du dictionnaire, chaque paire étant formatée comme clé: valeur.


Question 14 : Conversion Automatique des Types

Quel problème se pose dans ce code ?

nombres = [10, 20, 30]
resultat = ", ".join(nombres)
print(resultat)
  1. Une erreur TypeError. ✅
  2. Une chaîne de nombres est créée.
  3. Une liste de nombres séparés par des virgules est affichée.
  4. Rien ne s’affiche.

Réponse : 1

Tous les éléments doivent être des chaînes pour utiliser join(). Ici, les éléments sont des entiers, ce qui provoque une TypeError.

Correction :

resultat = ", ".join(map(str, nombres))
print(resultat)  # Résultat : "10, 20, 30"

Question 15 : Ajout Dynamique de Suffixes

Quel sera le résultat de ce code ?

fichiers = ["document1", "image2", "table3"]
resultat = ", ".join(f"{fichier}.txt" for fichier in fichiers)
print(resultat)
  1. document1, image2, table3
  2. document1.txt, image2.txt, table3.txt
  3. Une erreur TypeError.
  4. Une erreur de syntaxe.

Réponse : 2

La compréhension de liste ajoute .txt à chaque élément avant de les concaténer avec join().


Question 16 : Répétition avec join()

Que retourne ce code ?

mot = "Python"
resultat = "-".join(mot)
print(resultat)
  1. Python
  2. P-y-t-h-o-n
  3. -Python-
  4. Une erreur de syntaxe.

Réponse : 2

La méthode join() traite chaque caractère de la chaîne mot comme un élément distinct et les relie avec - comme séparateur.


Question 17 : Ajouter un Préfixe avec join()

Quel sera le résultat du code suivant ?

colonnes = ["Nom", "Prénom", "Âge"]
resultat = "\n".join(f"-> {col}" for col in colonnes)
print(resultat)
  1. Nom\nPrénom\nÂge
  2. -> Nom\n-> Prénom\n-> Âge
  3. Une erreur TypeError.
  4. Rien ne s’affiche.

Résultat :

-> Nom
-> Prénom
-> Âge

Question 18 : Optimisation avec des Générateurs

Quelle est l’avantage d’utiliser un générateur avec join() comme dans cet exemple ?

resultat = " ".join(str(i) for i in range(1000000))
  1. Cela provoque une erreur TypeError.
  2. Cela crée un tableau temporaire.
  3. Cela évite de créer un tableau temporaire. ✅
  4. Cela prend plus de mémoire.

Réponse : 3

Un générateur permet de produire les éléments un par un, sans créer une liste temporaire, ce qui économise de la mémoire.


Question 19 : Espaces Superflus

Quel problème pose ce code, et comment le corriger ?

mots = ["Python", "", "est", "génial"]
resultat = " ".join(mots)
print(resultat)
  1. Le code fonctionne correctement.
  2. Le résultat contient des espaces superflus. ✅
  3. Une erreur TypeError est levée.
  4. Une erreur de syntaxe.

Résultat Actuel :

Python  est génial

Correction : Utilisez filter() pour supprimer les chaînes vides :

resultat = " ".join(filter(None, mots))
print(resultat)  # Résultat : "Python est génial"

Question 20 : join() pour les Retours à la Ligne

Quel sera le résultat du code suivant ?

lignes = ["ligne1", "ligne2", "ligne3"]
resultat = "\n".join(lignes)
print(resultat)
  1. Une erreur de syntaxe.
  2. Chaque ligne est imprimée sur une nouvelle ligne. ✅
  3. ligne1ligne2ligne3
  4. Une erreur TypeError.

Résultat :

ligne1
ligne2
ligne3

Autres articles

Maîtriser l'utilisation de la méthode join en...
La méthode join en Python est un outil puissant pour...
Read more
Comment Gérer Efficacement le Budget Mariage avec...
Télécharger un modèle Excel automatisé de budget mariage automatisé avec...
Read more
Manipulation des Tableaux en Python avec Numpy
Numpy est une bibliothèque puissante et efficace pour la manipulation...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *