IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[2 problèmes PYTHON] Interprétation IDLE + chaines


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Par défaut [2 problèmes PYTHON] Interprétation IDLE + chaines
    bonjour à tous,

    Je crée des scripts avec python 2.6, je suit le tuto de gerard swimmen, et j'en suis aux chaines.

    L'énoncé est :

    Écrivez un script qui recopie une chaîne (dans une nouvelle variable), en insérant des
    astérisques entre les caractères.
    Ainsi par exemple, « gaston » devra devenir « g*a*s*t*o*n »

    J'ai pensé à faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    chaine, etoile = "Julien", "*"
    chaine_final = ""
    i = 0
    taille = len(chaine)
     
    while (i < (taille * 2)):
    	if (i % 2 == 0):
    		chaine_final[i] = etoile[0]
    	else:
    		chaine_final[i] = chaine[i-1]
     
    	i = i + 1
     
    print chaine_final
    Mais le DOS m'affiche ça : line 8 in <module>
    chaine_final[i] = etoile[0]
    Typ error: str object does not support item assignment

    ?
    Ensuite, je vous ai dit que c'est DOS qui me renvoi ça, mais je ne peux pas interprété un fichier avec l'iDLE.

    Quand je fais ça dans l'interpréteur il me fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> python essai(.py) # je l'ai aussi rajouté pour essayer
    syntax error ...
    Peut être le fichier a interprété doit être placé autre part ?

    Merci beaucoup

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Les chaînes de caractères sont des objets immuables, tu ne peux pas assigner une valeur à l'un des caractères comme ça. Il faut recréer une chaîne à laquelle tu ajoutes au fur et à mesure.
    Tu n'as pas besoin d'utiliser etoile[0], il n'y a pas de type caractère en Python, tu peux utiliser etoile directement. Sinon, une astuce consiste à utiliser la méthode join, mais ce n'est pas le but de l'exercice.

    Concernant ta deuxième question, les ">>>" indiquent que tu es dans le mode interactif de Python. Tu peux taper directement tes instructions et il t'affichera l'éventuel résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> 1+2*3
    7
    >>> a = 2
    >>> print 2*a
    4
    >>> if a > 1:
    ...     print "OK"
    ...
    OK
    Pour lancer un script à partir d'IDLE, il faut que tu l'ouvres, ensuite tu n'auras plus qu'à utiliser Run->Run module (raccourci: F5)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Par défaut
    oiffrig,

    Pourquoi est ce que en faisant une boucle je n'ajoute pas au fur et à mesure ? Il me semble qu'a chaque tour j'ajoute ?

    Ensuite, quand je lance l'IDLE, le raccourci F5 ne marche pas. Il n'y a pas de menu run

  4. #4
    Membre confirmé Avatar de arnaudk
    Inscrit en
    Février 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 38
    Par défaut
    Citation Envoyé par devatt Voir le message
    Pourquoi est ce que en faisant une boucle je n'ajoute pas au fur et à mesure ? Il me semble qu'a chaque tour j'ajoute ?
    En fait tu n'ajoutes pas, mais tu assignes, c'est-à-dire que tu définis la ième lettre ( qui n'existe pas ) comme étant une lettre de chaine ou etoile, ce qui ne fonctionne pas avec une chaine.

    Pour t'en convaincre, dans une console, définis une chaine vide test, et essaye de lui assigner une lettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    test=""
    test[0]="a"

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Par défaut
    Ah oui, effectivement, dois-je d'abord définir la taille avant ?

    comme ceci par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine = "test"
    chaine2 = ""
    len(chaine2) = len(chaine)
    ?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Non, tu n'as pas besoin de définir la taille.
    Voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    chaine = "gaston"
    chaine_final = ""
    i = 0
     
    while (i < len(chaine)):
        chaine_final = chaine_final + chaine[i] + "*"
        i = i + 1
     
    print chaine_final
    Tu peux aussi utiliser les +=, mais apparemment tu ne l'as pas encore vu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    chaine = "gaston"
    chaine_final = ""
    i = 0
     
    while (i < len(chaine)):
        chaine_final += chaine[i] + "*"
        i += 1
     
    print chaine_final

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  2. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  3. Problème d'interprétation XSL XML
    Par ForceTranquille dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/03/2006, 15h53
  4. Réponses: 5
    Dernier message: 22/09/2005, 10h34
  5. Réponses: 4
    Dernier message: 20/08/2004, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo