On 8/1/2015 10:54 AM, Quiles, Stephanie wrote:
Hello All,

I have a python assignment. I have to make sure that when user inputs email 
that the program verifies that the address as a @ and a “.” in the entry or 
else return an invalid email error.
A Very rudimentary form of email validation. i cannot get the program to work. 
Here is what i have so far:

import pickle


def main():
     cont = True
     emails = open_existing_file()
     print(emails)

     # Get data...
     while cont:
         name = input("Enter your name :")
         email1 = input("Enter your email address :")
         email2 = input("Enter alternate email address :")
         phone  = input("Enter your phone number :")
         contactlist = [email1,email2,phone]
         emails[name] = contactlist
         c = input("Enter another? [y]/n :")
         if c == 'n' or c == 'N':
             cont = False

         def email1():
             if '@' not in email and '.' not in email:
                 print('email needs @ and . at the same time')
     # Save data...
             outfile = open("emails.dat","wb")
             pickle.dump(emails,outfile)
             outfile.close
             print("Your data has been saved to emails.dat")

     def open_existing_file():
     # returns an empty dictionary or one that has data from a file
         emails = {}
     # Load the dictionary
     try:
         infile = open("emails.dat","rb")
         emails = pickle.load(infile)
         infile.close()
     except:
         print("No file to open. Starting with no data.")
     return emails

main()

Here is the error message :

/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 
/Users/stephaniequiles/Downloads/emailsupdate.py
Traceback (most recent call last):
   File "/Users/stephaniequiles/Downloads/emailsupdate.py", line 42, in <module>
     main()
   File "/Users/stephaniequiles/Downloads/emailsupdate.py", line 6, in main
     emails = open_existing_file()
UnboundLocalError: local variable 'open_existing_file' referenced before 
assignment

Process finished with exit code 1

not sure why it is not recognizing that the open_existing_file() function needs 
to be returned to the “emails” variable? I am guessing it has to do with my 
syntax? any suggestions, please?

Python executes as it processes the file, so that open_existing_file must have been previously defined before you can refer to it. Try moving that def block in front of main and you'll likely be OK (assuming no other issues)

Emile



_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to