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.")
Alice a 30 ans.
- Erreur de syntaxe.
- Une erreur TypeError. ✅
- 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)
- Une erreur TypeError.
Python est formidable.
✅Pythonestformidable.
['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}.")
Bonjour, je suis Bob et j'habite à Paris.
✅Bonjour, je suis {nom} et j'habite à {ville}.
- Une erreur de syntaxe.
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)
P y t h o n
Python
✅['P', 'y', 't', 'h', 'o', 'n']
- 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())
- Le code est inefficace en termes de performances. ✅
- Une erreur TypeError sera levée.
- Le résultat sera incorrect.
- 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)
Python 3 est super
- Une erreur TypeError. ✅
['Python', 3, 'est', 'super']
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)
- Une erreur de syntaxe.
- Une liste Python formatée.
- Une chaîne avec chaque article numéroté. ✅
- 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)
/home/utilisateur/documents/projets/python
✅- Une erreur TypeError.
- Une liste de dossiers formatée.
- 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)
ligne1ligne2ligne3
- Une erreur TypeError.
- Un texte séparé par des retours à la ligne. ✅
- 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)
- Une erreur TypeError.
- Une chaîne correcte est générée.
- Des espaces superflus apparaissent. ✅
- 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, 2, 3, 4
#1, #2, #3, #4
✅- Une erreur TypeError.
- 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)
Python est génial
Python\nest\ngénial
- Une erreur TypeError.
- 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)
nom: Alice, age: 30, ville: Paris
✅- Une erreur TypeError.
{'nom': 'Alice', 'age': '30', 'ville': 'Paris'}
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)
- Une erreur TypeError. ✅
- Une chaîne de nombres est créée.
- Une liste de nombres séparés par des virgules est affichée.
- 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)
document1, image2, table3
document1.txt, image2.txt, table3.txt
✅- Une erreur TypeError.
- 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)
Python
P-y-t-h-o-n
✅-Python-
- 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)
Nom\nPrénom\nÂge
-> Nom\n-> Prénom\n-> Âge
✅- Une erreur TypeError.
- 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))
- Cela provoque une erreur TypeError.
- Cela crée un tableau temporaire.
- Cela évite de créer un tableau temporaire. ✅
- 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)
- Le code fonctionne correctement.
- Le résultat contient des espaces superflus. ✅
- Une erreur TypeError est levée.
- 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)
- Une erreur de syntaxe.
- Chaque ligne est imprimée sur une nouvelle ligne. ✅
ligne1ligne2ligne3
- Une erreur TypeError.
Résultat :
ligne1
ligne2
ligne3