Vous avez vu comment lire une ligne complète, mais parfois on veut simplement lire un seul mot, afin de pouvoir le manipuler tout seul, indépendamment de la ligne. On définit de manière naturelle un mot comme une suite de lettres ne contenant aucun espace, que ce soit un véritable espace, un retour à la ligne ou une tabulation. Imaginons, par exemple, qu'on ait à lire un entier nb et un mot (de longueur plus petite que 100), tout deux sur la même ligne :
5 TRUC
et à afficher ensuite nb fois le mot donné :
TRUC TRUC TRUC TRUC TRUC
Avant de voir comment résoudre cet exercice, il faut comprendre qu'en Python on ne peut pas faire autrement que de lire toute la ligne à la fois. Il faut donc être capable d'extraire les mots ou les nombres situés sur une ligne. Imaginons qu'on souhaite lire la ligne
Cette ligne comporte plusieurs mots
puis afficher les premier et quatrième mots. On va utiliser le code suivant :
# Lit toute la ligne ligne = input() # Coupe la ligne en un tableau de mots mots = ligne.split(" ") # Affiche la ligne puis les deux mots print(ligne) print(mots[0]) print(mots[3])
Cette ligne comporte plusieurs mots Cette plusieurs
La fonction split
permet, à partir d'une chaîne de caractères, de la couper en petits morceaux, chaque morceau étant séparé des autres par une espace. La fonction renvoie un tableau de mots,
auxquels on peut alors accéder
de manière classique.
Il est aussi possible de lire la ligne de texte et de la couper en mot, en une seule ligne de code :
mots = input().split(" ")
Un programme possible pour résoudre le problème expliqué ci-dessus est le suivant :
elements = input().split(" ") nb = int(elements[0]) mot = elements[1] for id in range(nb): print(mot, end = ' ')
On a donc utilisé la fonction split()
que nous avions présenté et nous avons converti le premier mot en un entier, car nous savons que ce mot représente un nombre. Si nous ne l'avions pas fait, nous aurions eu l'erreur suivante :
TypeError: 'str' object cannot be interpreted as an integer