Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] Ajout de caractères dans une chaine de caractère

5 novembre 2009 à 17:09:30

Bonjour

Voilà mon problème :
Je demande à l'utilisateur de saisir une chaine de caractère.
Je voudrais rajouter des caractères entre chaque caractère de la chaine, en utilisant un for..in .
exemple : chaine saisie : "Langage"
chaine formatée : "L**a**n**g**a**g**e**"

Comment faire ?

Merci bcp :)
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 17:32:15

Bonjour,
Avec la boucle For on aurait quelque chose comme:

nom = 'langage'
nom2 =''
for i in nom:
    nom2 = nom2 + i + '**'

print nom2
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
5 novembre 2009 à 18:18:05

>>> nom="langage"
>>> '**'.join(nom)+"**"
'l**a**n**g**a**g**e**'
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 18:23:02

Citation : fred1599

>>> nom="langage"
>>> '**'.join(nom)+"**"
'l**a**n**g**a**g**e**'


Il me semble qu'il a demande avec la boucle For ?
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 18:29:42

Citation : Nathan21

Il me semble qu'il a demande avec la boucle For ?


Ça lui fera pas de mal de voir qu'il a d'autres solutions plus concises qui existent en Python ;)
  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

5 novembre 2009 à 18:32:38

Je veux bien si il demande une solution pour un type d'exercice.
Mais là il demande avec la boucle For.

M'enfin bref c'est pas très grave. ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
5 novembre 2009 à 18:34:22

Purée faut arrêter, je lui propose mieux, plus rapide, et la concaténation c'est bof, mais bon avec une boucle for on peut plus concis

>>> nom='langage'
>>> a=''
>>> for char in nom:
...     a+=(char+"**")
... 
>>> print a
l**a**n**g**a**g**e**
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 20:15:00

À noter que la première solution de fred est préférable parce qu'elle est plus concise et plus dans l'esprit python.
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 21:01:09

Citation : fred1599

>>> nom="langage"
>>> '**'.join(nom)+"**"
'l**a**n**g**a**g**e**'


Moi je serai intéressé par une explication de ce code. =)
Si quelqu'un veut bien ce n'est pas de refus.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
5 novembre 2009 à 21:04:27

Citation

join(...)
S.join(sequence) -> string

Return a string which is the concatenation of the strings in the
sequence. The separator between elements is S.



Que veux-tu dire de plus?
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 21:08:57

Essaie :
>>>liste = ["b", "o", "n", "j", "o", "u", "r"]
>>>"".join(liste)
"bonjour"
>>>"*".join(liste)
"b*o*n*j*o*u*r"
>>>",".join(liste)
"b,o,n,j,o,u,r"
>>>"bonjour" + "*"
"bonjour*"
>>>"**".join(liste) + "**"
"b**o**n**j**o**u**r**"


Analyse bien chaque résultat, tu devrais comprendre la solution proposée. Ça marche pareil si, au lieu d'une liste, tu lui donnes une chaîne (sauf que la première utilisation devient un peu inutile du coup).
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 21:10:35

Ah ok je comprenais pas le +'**' mais c'est juste pour les rajouter à la fin de la chaine.

Merci =)

Edit: Maxibolt: Ok donc utilisable avec chaîne ou liste.
Et donc l'intéret de :
liste = ["b", "o", "n", "j", "o", "u", "r"]
"".join(liste)


C'est de récupérer les valeurs d'une liste à la suite dans une chaîne ?

  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 21:22:51

Ouais.

http://wikipython.flibuste.net/BonnesPratiques en parle, à lire l'article du mec sur biologeek qui nuance tout ça.
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 21:37:17

Citation : Nathan21

Ok donc utilisable avec chaîne ou liste.


Oui, puisque tu peux traiter les chaînes comme des listes de chaînes (les caractères). Grâce au typage canardesque de Python, tu peux aussi l'utiliser avec un dictionnaire dont les clefs sont des chaînes, ou même avec une classe que tu auras définie toi-même, du moment qu'elle se comporte comme un itérateur renvoyant des chaînes.
  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2009 à 21:42:34

Ou un générateur. Comme tu l'as dit en fait, join marche avec n'importe quel objet itérable, comme le for : si on ne pouvait parcourir que des listes d'entiers avec, il perdrait beaucoup d'intérêt...
  • Partager sur Facebook
  • Partager sur Twitter
22 mars 2021 à 15:26:13 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


22 mars 2021 à 22:11:53

@diawmor Bonsoir, merci de ne pas déterrer d'ancien sujet.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter