I've noticed a very curious phenomenon here. I've instantiated a global variable (usrPIN), and I'm comparing it to a local variable (c). When I input a value (in this case, four zeros), the value is chopped off, creating a string that is one character long. Why?
usrPIN
...
def login():
global usrPIN
...
c = str(input("Enter PIN"))
print usrPIN
print str(c)
if usrPIN == c:
mainMenu()
else:
print "Incorrect PIN"
login()
What on earth is going on?

raw_input(...)rather thanstr(input(...))-str(eval(raw_input('0000')))is effectivelystr(int('0000')), which is'0'. Also, while you're here: don't use globals.