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 :

Problème avec l'apele de fonction


Sujet :

Python

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2020
    Messages : 14
    Points : 18
    Points
    18
    Par défaut Problème avec l'apele de fonction
    Bonjour tout le monde

    Je suis un novice dans la programmation python.Dans un projet, je dois lister les fichier d'un répertoire.Puis effectuer des calcules.J'ai créé deux fonctions pour effectuer ce travail.Mais je me bloque sur l'appel d'une fonction.Pouvez - vous me dire ou se trouve ma faute ?.Le compilateur m'indique je ne définie pas la variable lignes.
    Je vous remercie d'avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    import os
    import numpy as np
    import matplotlib.pyplot as plt
    import glob
    import os.path
     
    def tri1():
    	tab=[]
    	for chn in lignes:
    		tab.append(chn.split('\t'))
    		print(tab)
     
     
     
     
     
     
    def tri():	
    	os.chdir("/media/tonny/TOSHIBA EXT/informatique python/test1")
    	tab=[]
    	for file in glob.glob("*.txt"):
    		 test123 =open(file,"r")
    		 lignes = test123.readlines()
    		 tes1 = tri1()
    		 print("\n")
     
     
    ter = tri()
    print(ter)
    réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Traceback (most recent call last):
      File "apprenti2.py", line 28, in <module>
        ter = tri()
      File "apprenti2.py", line 24, in tri
        tes1 = tri1()
      File "apprenti2.py", line 9, in tri1
        for chn in lignes:
    NameError: name 'lignes' is not defined

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 18 681
    Points : 32 253
    Points
    32 253
    Par défaut
    Salut,

    Python n'est pas compilé!

    Le message d'erreur est clair: où avez vous définit la variable globale lignes pour que la fonction tri1 puisse l'utiliser?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    9 657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 9 657
    Points : 26 361
    Points
    26 361
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par tomme tame Voir le message
    Pouvez - vous me dire ou se trouve ma faute ?.Le compilateur m'indique je ne définie pas la variable lignes.
    C'est exact. Ta faute, comme l'indique l'interpréteur Python, se trouve sur la ligne 9 for chn in lignes. Dans la fonction "tri1" cette variable n'existe pas.

    Si tu veux que cette fonction la connaisse, soit cette variable doit être globale (et généralement les dev qui connaissent le danger des globales n'aiment pas les utiliser pour un truc aussi trivial), soit il faut que la fonction la reçoive en paramètre.

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    def tri1(lines):
    	tab=[]
    	for chn in lines:
    		tab.append(chn.split('\t'))
    		print(tab)
     
    def tri(rep):	
    	os.chdir(rep)
    	tab=[]
    	for file in glob.glob("*.txt"):
    		 test123 =open(file,"r")
    		 lignes = test123.readlines()
    		 test123.close()
    		 tes1 = tri1(lignes)
    		 print("\n")
     
    ter = tri("/media/tonny/TOSHIBA EXT/informatique python/test1")
    print(ter)

    Accessoirement tu print une fonction qui ne renvoie rien (donc None) donc ça ne devrait pas afficher grand chose. De même je ne vois pas l'utilité de ce tes1=tri1() vu que la fonction tri1() ne renvoie rien et que de toute façon tu ne sembles pas utiliser la variable "tes1". Et de même dans tri1() tu remplis un tableau pour rien. Ce serait donc bien que tu ne tapes pas des instructions au hasard mais qu'on sente que tu suis une logique soutenue. Et essaye d'utiliser des noms un peu plus malins que "tri", "tri1", "tes1" et "test123"...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2020
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    Je vous remercie pour votre réponse.Cela ma permit de comprendre la différence entre une fonction avec variable et sans variable.Merci beaucoup

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2020
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    J'ai une question c'est normale qu'une fois ,on a défini les variables globales.Quand on appelle tri et on fait un print.Cela vous affiche none.Je vous remercie d'avance

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 18 681
    Points : 32 253
    Points
    32 253
    Par défaut
    Citation Envoyé par tomme tame Voir le message
    J'ai une question c'est normale qu'une fois ,on a défini les variables globales.Quand on appelle tri et on fait un print.Cela vous affiche none.Je vous remercie d'avance
    Assignez None à la variable globale, elle sera définie et "print" affichera None.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec structure dans une fonction
    Par Saliman dans le forum C
    Réponses: 2
    Dernier message: 22/11/2007, 12h45
  2. problème avec un appel de fonction de callback de C++ vers C#
    Par surfurax dans le forum Framework .NET
    Réponses: 1
    Dernier message: 29/01/2007, 11h09
  3. [DOM XML] Problème avec l'une des fonctions
    Par Joe Le Mort dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 08/11/2006, 16h20
  4. Problème avec la signature des fonctions dll
    Par mdefo dans le forum MATLAB
    Réponses: 1
    Dernier message: 20/09/2006, 15h23
  5. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 16h50

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