Probleme avec python

Fermé
@rachnid - 2 nov. 2003 à 23:42
 @rachnid - 4 nov. 2003 à 20:15
Salut

Ma question est tres simple : Pk ca marche pas ?
j' utilise Python 2.2.3. Des que je le lance le ce script prog plante.
Je sais d'ou vient le prob; des que j' essaie de replacer un caractere d' une chaine le prog plante
En faite ma question seré plus tot : Est ce que qqn a une solution ?

Merci de me repondre

str = "string"
stra = ""

max = len(str)

i=0
a=0

while (i<max):

  stra[a] = str[i]
  i=i+1
  a=a+1
  stra[a] = "*"
  a=a+1

print str
print stra

input()
A voir également:

4 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
3 nov. 2003 à 10:12
Si j'ai bien compris ce que tu veux faire, ça donnerait ceci:
str = "string"
stra = ""

max = len(str)

i=0

while (i<max):
  stra = stra + str[i]
  i=i+1
  stra = stra + "*"

print str
print stra

input()



Un autre façon de faire serait:
str = "string"
stra = ""
for caractere in str:
    stra = stra + caractere + "*"

print str
print stra

input()


En encore plus Pythonesque en utilisant les 'list comprehension':
str = "string"
stra = ''.join([caractere + "*" for caractere in str])

print str
print stra

input()
0
Voila C ca
mais en faite je commence aprendre le python
mais ce qui me fait chier C surtout que je puisse pas remplacer un caractere d' une chaine de caractere ( par exemple ceci ne marche pas:
str = "string"
str[0] = "*"
) et je trouve ca quand meme emer#§.!;? .
Les deux dernier code que tu ma donné marche mais pas le premier .
mais merci quand meme
Kes que tu utilise comme executeur de script ? Pk le probleme peut etre de la.
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
3 nov. 2003 à 18:45
je puisse pas remplacer un caractere d' une chaine de caractere

ça se fait différemment en Python.
Les chaînes sont dites 'immutables', c'est à dire qu'elles ne sont pas modifiables.

Pour la modifier, il faut soit utiliser directement les fonctions de chaînes (replace() et autres), soit convertir temporairement la chaîne en liste (qui sont mutables).

Note que pour remplacer du texte, replace() est très pratique:
machaine = machaine.replace('toto','titi')


Pour choper une partie d'une chaîne, il y a une syntaxe spéciale:
>>> a='http://www.commentcamarche.net'
>>> print a[7:11]
www.
>>> print a[:11]
http://www.
>>> print a[7:]
www.commentcamarche.net
>>> print a[:7]
http://
>>> print a[:7]+a[11:]
http://commentcamarche.net


Dans notre cas, pour remplacer des caractères à certaines positions seulement, on aurait transformé la chaîne en liste (qui est mutable, elle):
machaine = 'Hello !'
maliste = list(machaine)
maliste[5] = 'c'  # Ici, on fait toutes les modifs qu'on veut sur chaque caractère individuellement.
machaine = ''.join(maliste)
print machaine



executeur de script ?

J'utilise Python 2.3.2 directement téléchargé de http://python.org
Mais ça ne devrait pas faire de différence. :-)
0
OK, merci sebsauvage.

Mais dans le bouquin avec le quel j' apprend il me dise que je peut changer les caracteres d' une chaine avec un simple :
str = "string"
str[0] = "*"

Donc si G bien compri mon livre m' appprend des choses qui sont fausse. la solutions avec les fonctions liste() et join() me semble plutot bien.
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
4 nov. 2003 à 19:36
Donc si G bien compri mon livre m' appprend des choses qui sont fausse

Si c'est un livre sur Python, c'est effectivement faux.

Par contre, tu as bien le droit de faire print str[0].
C'est juste que tu n'a pas le droit de l'assigner (str[0]=...)

Je ne sais pas si je t'ai donné ces liens, mais voici quelques sites pour apprendre à programmer en Python, et apprendre à programmer tout court. Ils sont bien faits:

* Traductions du tutoriel Python officiel: http://lfe.developpez.com/tutoriel/python/ ou http://perso.club-internet.fr/olberger/python/doc/tut/tut.html
* python: http://www.ceramiko.ch/python/main.html
* Cours de programmation Python: http://www.ulg.ac.be/cifen/inforef/swi/python.htm
* J'apprend à programmer avec Python: http://www.p3b.org/tutor/denis/
* Python est mon ami: http://ludovic.pinelli.free.fr/Python/Python_ami.html
0
C 'est effectivement un livre de python, en faite il ne me dit pas vraiment que je peut le fair mais le sous entend. Il y a cet exercice a faire :
Ecrivez un script qui recopie une chaine (nouvelle variable) en a joutant des asterisques entre chaques caracteres


Alors que je n' est encore appris aucune fonction a part type(). Programmant en C++ je me suis di a tor que je pouV changer le caractere d' une chaine avec : str[0] = "*".

Et merci pour les tutorial
0

Discussions similaires