HOWTO · Python

Répéter la chaîne N fois en Python

Apprenez à répéter une chaîne un nombre fixe de fois en Python et à construire une chaîne jusqu’à une longueur de caractères spécifiée.

Sur cette page

En Python, multipliez une chaîne par un entier pour répéter la chaîne entière un nombre fixe de fois. Pour obtenir une chaîne d’une longueur cible en caractères, répétez-la suffisamment de fois, puis découpez le résultat. Ces deux méthodes répondent à des besoins différents : la première conserve chaque copie entière, tandis que la seconde peut s’arrêter au milieu d’une copie.

Répéter une chaîne N fois avec l’opérateur * en Python

Utilisez l’opérateur * lorsque vous connaissez le nombre de copies entières souhaité. Le résultat est une nouvelle chaîne qui contient le texte d’origine répété à la suite. Voici un exemple simple :

print("ha" * 3)
hahaha

La sortie est hahaha. Multiplier par 0 produit une chaîne vide. Un nombre de répétitions négatif produit également une chaîne vide ; si votre application doit refuser une telle valeur, vérifiez le nombre avant la multiplication. Ce nombre doit être un entier.

Si vous souhaitez insérer un séparateur entre les copies, utilisez join() sur une séquence répétée. Par exemple, ", ".join(["ha"] * 3) place une virgule suivie d’une espace entre les copies et produit ha, ha, ha. Le séparateur se place entre les éléments ; l’opérateur *, à lui seul, juxtapose simplement les copies. Pour répéter une chaîne un nombre fixe de fois, la multiplication de chaînes est le choix le plus direct.

Répéter une chaîne jusqu’à une longueur donnée en Python

Pour atteindre une longueur cible, le résultat peut se terminer au milieu de la dernière copie. Répétez la chaîne source suffisamment de fois, puis découpez le résultat au nombre de caractères demandé. Cette fonction refuse une longueur cible négative et signale qu’une chaîne source vide ne peut pas produire une longueur positive :

def repeat_to_length(text, target_length):
    if target_length < 0:
        raise ValueError("target_length must be nonnegative")
    if not text and target_length > 0:
        raise ValueError("text must not be empty for a positive target length")
    if target_length == 0:
        return ""

    copies = (target_length + len(text) - 1) // len(text)
    return (text * copies)[:target_length]

result = repeat_to_length("abc", 8)
print(result)
abcabcab

Avec les entrées indiquées, la sortie est abcabcab : deux copies entières, suivies des deux premiers caractères de la copie suivante. L’expression de division arrondie à l’entier supérieur calcule le nombre de copies nécessaires, puis le découpage impose exactement la longueur demandée.

Une longueur cible de 0 renvoie une chaîne vide. Une chaîne source vide ne peut produire qu’une longueur cible de 0 ; la fonction lève ValueError si la longueur demandée est positive. Elle lève également ValueError pour une longueur négative, afin que l’appelant ne reçoive pas silencieusement un résultat trompeur. Si votre application nécessite une autre règle, modifiez ces vérifications avant d’utiliser la fonction.