2012-11-02 2 views
0

Je reçois l'erreur suivante Message:NameError: nom global 'PIN' est pas défini

Traceback (most recent call last): 
File "/Volumes/KINGSTON/Programming/Assignment.py", line 17, in <module> 
    Assignment() 
File "/Volumes/KINGSTON/Programming/Assignment.py", line 3, in Assignment 

Mon code est:

def Assignment(): 
    prompt = 'What is your PIN?' 
    result = PIN 
    error = 'Incorrect, please try again' 
    retries = 2 
    while result == PIN: 
     ok = raw_input(Prompt) 
     if ok == 1234: 
      result = menu 
     else: 
      print error 
      retries = retries - 1 

     if retries < 0: 
      print 'You have used your maximum number of attempts. Goodbye.' 

Assignment(): 

aimerait l'avoir un peu d'aide si quelqu'un sait où Je vais mal et peux expliquer

+2

Qu'est-ce que est le programme, qu'essayez-vous de faire? Qu'avez-vous essayé de résoudre le problème? S'il vous plaît, donnez-nous un peu plus pour continuer, puis un message d'erreur, du code et une petite tape sur le dos. –

Répondre

0

Cette erreur particulière est soulevée parce que quand vous dites result = PIN, PIN n'existe pas réellement. Comme il n'est pas entre guillemets, Python suppose qu'il s'agit d'un nom de variable, mais quand il vérifie que cette variable est égale à, il ne trouve rien et soulève le NameError. Lorsque vous corrigez cela, cela se produira également avec prompt puisque vous l'appelerez plus tard Prompt.

Je ne sais pas si cela est votre code complet ou non, donc je ne suis pas sûr de ce que les autres questions pourraient être, mais il semble que vous utilisez result et PIN pour contrôler votre boucle while. Rappelez-vous qu'une boucle while fonctionne jusqu'à ce que la condition qu'il vérifie est False (ou si vous cassez manuellement de celui-ci), donc au lieu de déclarer les variables supplémentaires, vous pouvez commencer par quelque chose comme ceci:

def Assignment(): 
    # No need to declare the other variables as they are only used once 
    tries = 2 

    # Go until tries == 0 
    while tries > 0: 
     ok = raw_input('What is your PIN?') 
     # Remember that the output of `raw_input` is a string, so either make your 
     # comparison value a string or your raw_input an int (here, 1234 is a string) 
     if ok == '1234': 
      # Here is another spot where you may hit an error if menu doesn't exist 
      result = menu 
      # Assuming that you can exit now, you use break 
      break 
     else: 
      print 'Incorrect, please try again' 
      # Little shortcut - you can rewrite tries = tries - 1 like this 
      tries -= 1 

     # I'll leave this for you to sort out, but do you want to show them both 
     # the 'Please try again' and the 'Maximum attempts' messages? 
     if tries == 0: 
      print 'You have used your maximum number of attempts. Goodbye.' 
Questions connexes