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 :

VOTRE AVIS pour ce code


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut VOTRE AVIS pour ce code
    [Python 2]

    bonjour!
    je suis un tuto d'un aute site. je suis confrontè à un problème. je dois faire une série d'exercices dont ce code :

    ## EXERCICE "anti_voyelle" soit supprimer toute les voyelles d'une chaine de caractères ! ##

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def anti_voyelle(texte):  
        n_texte = str()
        for c in texte:
            if c in "aeiouAEIOU":
                pass
            else:
                n_texte += c   
        print n_texte   
        return n_texte
     
    anti_voyelle("Regarde les Mots!")
    ##la console me donne ce message. ( pour moi il s'agit d'un bog mais peut être que non )##

    "Oups, merci de réessayer. Votre fonction a échoué sur Qu'est-ce que ça fait? De se retrouver seul? comme entrée car votre fonction indique une erreur "'str' object is not callable". "

    ce qui me tracasse c'est que l'interpreteur me donne la bonne reponse soit :" Rgrd ls Mts!"

    breff j'ai un problème !!!

    merci a vous pour vos réponses

    R

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est la ligne:

    qui ne va pas. S'il faut initialiser n_texte à "chaine vide", il faut faire:

    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    C'est une réponse de codeacademy ça: Votre fonction a échoué sur Qu'est-ce que ça fait? De se retrouver seul?, surprenant.

    Mais l'erreur est une erreur semble-t-il
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Python 2.7.3 (default, Jun 22 2015, 19:43:34) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> s = str()
    >>>

  4. #4
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    C'est la ligne:

    qui ne va pas. S'il faut initialiser n_texte à "chaine vide", il faut faire:

    Bonsoir,
    Pour moi python 2.7 ou python 3.5, cela fonctionne (juste les parenthèses du "print" à modifier…
    (Dans les deux cas, str() renvoie une chaîne vide).

    Clodion

  5. #5
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Ça se trouve, c'est parce qu'il manque le y dans les voyelles

    Ou parce qu'il y a un print et un return en même temps.
    Le temps ronge l'amour comme l'acide.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Points : 482
    Points
    482
    Par défaut
    Bonjour,

    Citation Envoyé par renaud1967 Voir le message
    "votre fonction indique une erreur "'str' object is not callable". "
    Je ne connais pas ce site mais au vu de l'erreur il semble vouloir tester votre fonction.

    Est-ce qu'il n'utiliserait pas la dernière ligne anti_voyelle("Regarde les Mots!") qui renvoie du texte pour essayer d'appeler la fonction ?



    Je sais que vous apprenez mais vous verrez certainement plus tard qu'il existe des méthodes pour réduire ce code en une ligne, plus « pythonique » et efficace.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Python 2 & 3
    ''.join(filter(lambda c: c not in "aeiouyAEIOUY", "Regarde les Mots!"))
    filter(function or None, iterable)

    Pour chaque élément contenu dans l'iterable, ici du texte qui contient des caractères itérables.
    Retourne l'élément itéré si la condition passée par la fonction est vraie (True)
    Condition: élément c not in "aeiouAEIOU" qui va retourner True or False

    La fonction filter retourne un objet iterable que l'on peut parcourir en liste par exemple.
    str().join(iterable) va ensuite joindre les éléments pour en faire du texte/string.

    Voilà comment gagner 8 lignes.

    Mais j'avoue que ce n'est pas toujours évidant à relire plus tard.


    Et une version pour éviter d'avoir à gérer les lower/upper cases:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ''.join(filter(lambda c: c.lower() not in "aeiouy", "Regarde les Mots!"))
    Et pour tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import string
    ''.join(filter(lambda c: c.lower() not in "aeiouy", string.ascii_letters))
     
    'bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ'

Discussions similaires

  1. Votre avis pour améliorer mon code (opérations matricielles)
    Par Schopenhauer dans le forum Débuter
    Réponses: 42
    Dernier message: 17/09/2010, 19h25
  2. Réponses: 4
    Dernier message: 26/04/2006, 14h36
  3. [Code Prof]votre avis sur un code?
    Par granquet dans le forum Réseau
    Réponses: 6
    Dernier message: 11/04/2006, 20h41

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