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 :

Conversion de chaînes de caractères


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 26
    Par défaut Conversion de chaînes de caractères
    Salut,

    Je récupère une liste de fichiers et j'aimerais les mettre en forme. Je me suis donc créé le fichier de test suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fileSystTbl = ['/', '/usr', '/var']
     
    def convElement(list):
        for element in list:
            if element == '/':
                '/'.replace('/','root')
            else:
                element.strip('/')
     
    print convElement(fileSystTbl)
    Pour l'instant, il me renvoie "None", mais j'aimerais qu'il puisse me renvoyer la liste: root, usr, var.

    Comment faire?

    Merci d'avance pour vos réponses

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 117
    Par défaut
    C'est normale que python te renvoi "none" puisque ta fonction ne retourne rien.

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 292
    Par défaut
    Bonjour,

    Aucun return dans votre fonction donc c'est normale que None soit renvoyé.

    J'ai modifié votre code sur des détails:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    fileSystTbl = ['/', '/usr', '/var']
     
    def convElement(list):
        for ind, element in enumerate(list):
            if element == '/':
                list[ind] = 'root'
            else:
                list[ind] = element.strip('/')
        return list
     
    print convElement(fileSystTbl)

  4. #4
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Bonjour,


    En python, list est un objet mutable et les objets mutables sont passés par référence lors d'appel de fonction. En conséquence, la fonction modifie directement l'objet. L'expression return n'est pas nécessaire dans ce contexte.

    Comme nos amis ont indiqué, puisque vous n'avez pas de clause return dans votre code, Python ajoute implicitement une expression "return None". Étant donné que vous avez inclu l'appel de fonction directement dans l'appel de "print" c'est donc "None" que print va récupérer. La solution consiste donc à séparer ces deux appels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    def convElement(list):
        for ind, element in enumerate(list):
            if element == '/':
                list[ind] = 'root'
            else:
                list[ind] = element.strip('/')
     
    fileSystTbl = ['/', '/usr', '/var']			
    convElement(fileSystTbl)
    print(fileSystTbl)
    Et on obtient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    >>> ['root', 'usr', 'var']

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 292
    Par défaut
    En effet, list est un objet mutable d'où les détails de modification précédent.
    En revanche, il est toujours bon de mettre un return de ce que l'on veut.
    Car comme vous l'expliquez ne rien mettre est équivalent à mettre un return ou return None donc peu d'intérêt (qui peu le plus peu le moins).

  6. #6
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Citation Envoyé par Gakusei Voir le message
    ... En revanche, il est toujours bon de mettre un return de ce que l'on veut ...
    Tout à fait d'accord avec vous Il faut toujours le mettre pour améliorer la lisibilité et la clarté du code. En C et en Java on peut utiliser le mot "void" afin de préciser que la fonction/méthode en question ne renvoie rien, mais en python ce n'est pas le cas pour les fonctions et d'ailleurs je me demande pourquoi il n'ont pas fait

Discussions similaires

  1. Conversion de chaînes de caractères en numérique
    Par djelloharmel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 21/12/2011, 11h03
  2. [LIST] Problème de conversion de chaînes de caractères
    Par yannick29000 dans le forum Autres langages
    Réponses: 0
    Dernier message: 31/07/2009, 12h10
  3. Typage -> conversion en chaîne de caractère
    Par CodeCRC dans le forum Général Python
    Réponses: 1
    Dernier message: 30/06/2009, 17h57
  4. Conversion de chaîne de caractères
    Par mr_samurai dans le forum Fortran
    Réponses: 6
    Dernier message: 23/01/2008, 08h44
  5. Conversion de chaîne de caractères
    Par fracam2 dans le forum Access
    Réponses: 3
    Dernier message: 19/07/2006, 11h52

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