> On Aug 1, 2015, at 5:17 PM, Danny Yoo <d...@hashcollision.org> wrote:
> Thank you, the program is now working but when the email is not entered 
> correctly it doesn’t make me go back and re-enter, it spits out an error code 
> but then moves on to the next field . 

Here is the code: 

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 :")
        if '@' not in email1 or '.' not in email1:
            print('email needs @ and . at the same time')
            cont = False
        email2 = input("Enter alternate email address :")
        if '@' not in email2 or '.' not in email2:
            print('email needs @ and . at the same time')
            cont = False
        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 email1 or '.' not in email1:
            print('email needs @ and . at the same time')

    def email2():
        if '@' not in email2 or '.' not in email2:
            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()


This is the output: 

/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 
/Users/stephaniequiles/Downloads/emailsupdate.py
{'maria': ['steph', 'sst', '33ed'], 'Jim': 'ththth@ththt', 'Ton': 
'tomtomtomt@tomtom', 'Bob': 'b...@bob.com'}
Enter your name :sfdgh
Enter your email address :sdfkj...@syesgd.com
Enter alternate email address :sdfghfds@Asfdgfdcod
email needs @ and . at the same time
Enter your phone number :

I must have something missing but can’t remember what it is. Thanks for your 
help! 

Stephanie 

            
> On Sat, Aug 1, 2015 at 2:03 PM, Válas Péter <tur...@64.hu> wrote:
>> Hi Stephanie,
>> 
>> the function should be defined first, and used after. So put it before
>> main().
> 
> 
> 
> It's perfectly legal and ok to say:
> 
> ###########################
> def main():
>     callHelper()
> 
> def callHelper():
>     print("I am the helper")
> 
> main()
> ###########################
> 
> 
> 
> Rather, the problem is due to putting the helper function accidentally
> nested *within* main:
> 
> ############################
> def main():
>     callHelper()
> 
>    def callHelper():
>         print("I am the helper but can't be called until after the 
> definition")
> 
> main()
> #############################
> 
> 
> 
> One technical way to "fix" this is to move it up a bit:
> 
> #############################
> def main():
>    def callHelper():
>         print("I am the helper but can't be called until after the 
> definition")
> 
>    callHelper()
> 
> main()
> #############################
> 
> 
> 
> But this is usually unsatisfactory because we can't then access
> callHelper from outside.  There can be valid reasons to hide function
> definitions at times, but this isn't one of those situations.
> 
> 
> Válas's suggestion, to move the helper's definition above, does make sense:
> 
> #############################
> def callHelper():
>     print("I am the helper but can't be called until after the definition")
> 
> def main():
>    callHelper()
> 
> main()
> #############################
> 
> but a key point needs to be made: don't just move it *up*, but move it *out*.

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

Reply via email to