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 de débutant et NameError [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Auditeur libre
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auditeur libre
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut Problème de débutant et NameError
    Bonsoir !

    Je suis en plein apprentissage de python. Je fais ça dans mon coin, tranquillou, à l'aide du livre Apprenez à programmer en Python 3 et autres.
    Je n'ai pas eu de difficultés avant d'arriver au chapitre sur modularité. (C'est triste... c'est le tout début !)
    Pas de problème pour savoir ce que ça veut dire mais quelque chose bloque et ça m'énerve.
    Ca fait deux jours que je cherche partout, et je me dis que ça doit être un truc évident que je ne suis plus capable de voir.
    Donc voilà. J'utilise Pycharm pour écrire mes programmes.
    Je balance donc ce petit exemple du cours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def table7():
        nb = 7
        i = 0
        while i < 0:
            print(i + 1, "x", nb, (i + 1) * nb)
            i += 1
    Ce n'est rien de compliqué, c'est la base avant d'introduire les paramètres de la fonction créée.
    Or, à chaque fois que je fais Run, il ne se passe rien. Mais ça, c'est normal.
    Je vais sur la console et là, j'appelle la fonction. Et j'ai ce message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>>table7()
    Traceback (most recent call last):
    File "<input>", line 1, in <module>
    NameError: name 'table7' is not defined
    Après moultes recherches, je comprends bien que ma fonction n'est pas définie. Mais où dois-je la définir si ce n'est dans ce que j'ai tapé avant?

    Je suis allé taper ce code dans le Python Shell, mais toujours aucun résultat.
    Croyant que je tapais n'importe quoi, j'ai copié/collé le code du cours (afin d'éviter les erreurs de frappe) mais ce n'est pas plus probant...

    Je suis certain que c'est tout simple mais comme souvent quand on a le nez dans le guidon, on ne voit plus trop où on va.
    Si quelqu'un a une idée... je suis preneur !

    Merci !

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    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 : 21 776
    Par défaut
    Salut,

    Citation Envoyé par Sunkilmoon Voir le message
    Je suis certain que c'est tout simple mais comme souvent quand on a le nez dans le guidon, on ne voit plus trop où on va.
    Lorsque vous démarrez la console, il n'y a rien dedans...
    Donc sauf à retaper la définition de la fonction table7 avant de l'appeler, il faut sauvegarder cette définition dans un fichier (un script) et le charger avec un "import".
    Et si vous n'avez pas encore vu tout cela dans les tutos, c'est qu'on commence avec tout au même endroit (i.e. définition et appel de la fonction):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def table7():
          # blabla
     
    table7()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Auditeur libre
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auditeur libre
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut
    Effectivement, c'était tout simple et tellement évident.

    J'imagine que j'apprendrai à stocker des fonction plus tard !

    Merci !

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    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 : 12 851
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Sunkilmoon Voir le message
    J'imagine que j'apprendrai à stocker des fonction plus tard !
    Oui, dans un fichier texte qui aura, par convention, l'extension ".py". Exemple "toto.py". Si ce fichier contient à la fois la fonction, et à la fois son appel (donc qu'en fait il se suffit à lui-même pour travailler, comme l'exemple de wiztricks) alors tu peux, depuis un terminal en lignes de commandes, appeler python3 toto.py ou, si ton os a été configuré pour associer un ".py" à python, appeler directement toto.py.

    Si ton fichier ne contient que la fonction et que tu veux pouvoir l'utiliser depuis un autre source Python, alors dans cet autre source soit tu écris import toto puis tu peux alors appeler toto.table7(), soit from toto import * (ou from toto import table7) puis tu peux dans les deux cas appeler table7().
    Mon Tutoriel sur la programmation «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. requete, problème de débutant
    Par focus dans le forum Access
    Réponses: 4
    Dernier message: 16/02/2006, 05h51
  2. Problème de débutant dans une requête
    Par decour dans le forum Access
    Réponses: 7
    Dernier message: 14/10/2005, 14h17
  3. [C#][service windows] problème de débutant avec 1 timer
    Par Nycos62 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/10/2005, 11h22
  4. Réponses: 3
    Dernier message: 24/09/2005, 09h34
  5. [DB2] problèmes de débutant
    Par rémi_tounul dans le forum DB2
    Réponses: 4
    Dernier message: 21/04/2005, 17h08

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