2016-11-26 1 views
0
def one(): 
    if(slist[0] == 'a'): 
     first = 3 

Ce code est sur mon fichier « numbers.py » et je l'ai répété pour chaque lettre de l'alphabet. Ce fichier est importé au principal fichier je lance.Pourquoi ai-je et erreur (nom NameError « première » ne définit pas

import number 
from number import * 
if(len(number.string) == 1): 
    number.one() 

print(number.first) 

Ce code est dans mon dossier principal et est censé imprimer un « 3 » si vous tapez « a » quand il vous demande ce que vous voulez décoder

Répondre

1

première variable est local pour fonctionner un par défaut, il n'existera plus une fois quitter la fonction, le déclarer global pour le rendre accessible en dehors de la fonction

Et vous pourriez ne pas avoir besoin de la ligne from number import * puisque vous devriez accéder à partir de l'espace de nom de nombre. Ce ne est pas recommandé d'utiliser import * aussi pour éviter la pollution de l'espace de noms

first=None 
def one(): 
    global first 
    if(slist[0] == 'a'): 
     first = 3 
1

Une autre solution pourrait être de retourner votre variable first, de sorte que, vous pouvez l'utiliser dans votre main que vous voulez.

je vous montre:

def one(): 
    if(slist[0] == 'a'): 
     first = 3 
     return first 
     ''' you could use this instead ''' 
     #return 3 

puis, de retour dans votre principale:

import number 
if(len(number.string) == 1): 
    first = number.one() 

print(first)