3

I am writing a program with python which will do several things such as login as student, login as driver. but when I try to run the code, I face several problems. I am writting down the code below. and also I am giving you the screenshot of the errors. Please help if you can.

Thanks in advance.

 print "========================================================"
 print "==============Welcome to LiftServer System=============="
 print "========================================================"
 print "\n"
 print "Type start() to View the Options"
 print "\n"



 DriverLogin=[("ali", "ila"), ("bla", "alb")]
 PassLogin=[("ila", "ali")]


 def CorrectDriverLogin(n,x):
  for i in range (len(x)):
    a,b = x[i]
    if (a==n):
        return b

 def CorrectPassLogIn(c,y):
  for j in range (len(y)):
     d,e = y[j]
     if (d==c):
        return e


 def start():
  print "\n"
  print "=====================You are in the System============="
  print "\n"
  print "Choose an option:"
  print "======================================================="
  print "1. Login for Drivers"
  print "2. Login for Students"
  print "3. Exit"
  print "======================================================="
  print "\n"
  choice= raw_input("Enter the choice number:")
  print "\n"

  if (int(choice)==1):
    print""
    DriverLogin()

  elif(int(choice)==2):
    print ""
    PassLogin()

  if (int(choice)==1):
    print" "
    print" "
    p = raw_input (" Current campus: ")
    k = raw_input (" Travelling to: ")
    m = raw_input (" Leaving Time: ")
    x = raw_input (" Enter AM / PM: ")
    a = raw_input (" Number of available seats: ")
    j = raw_input (" Meeting time: ")
    print" \nI am in campus " + p + " ,leaving to campus " + k + " at: " + m + x +" ,where I have only " + a + " seat(s) available."
    print" "
    print"I will be at the reception at: " + j + x + "."
    print" "    
    print"===================================================="
    print"\n"
    print "Send message? "
    print" "
    sendTheMessageD()

elif (int(choice)==2):
    homePage()

 def sendTheMessageD():
    print" "
    print"1. Yes"
    print"2. No"
    choice = raw_input ("Confirm: ")
    print" "
    homePage()

 def PassLogin():
     userPass = raw_input("Username:")
     passName = raw_input("Password:")
     choice=0
     if (userPass==CorrectPassLogIn(passName, PassLogin)):
       print"\n"
       print "=================================================================="
       print "1. Send a Message"
       print "2. View Messages"
       print "3. Log out of the System"
       print "==================================================================="
       print "\n"
       choice = raw_input("Enter the choice's number:")
       print"\n"
     else:
        print"Incorrect Username or Password"
        print"\n"
        print"Try To Log In Again"

     if (int(choice)==1):
        print" "
        sendMessageP()

     elif(int(choice)==2):
        print" "
        viewMessageD()
  def sendMessageP():
        print "======================================================================="
        print "1)Write a message"
        print "2)Go Back"
        print "===========++=========================================================="
        print" "
        choice = raw_input("Enter The choice's Number: ")

      if(int(choice)==1):
        print" "
        y = raw_input("Destination: ")
        c = raw_input("Time: ")
        l = raw_input("Enter AM ? PM: ")
        t = raw_input("Required seats: ")
        print"\n Is there anyone going to campus " + y + " ,at: " + c + l + " ,and has " + t + " seat(s) available."

      elif(int(choice)==2):
        print""
        def sendTheMessageP():
        print" "
        print"1)Yes"
        print"2)No"
        choice = raw_input ("confirm")
        print" "
        homePage()
    def viewMessageD():
        print "======================================================================="
        print"Inbox"
        print" "
        print"1. Message 1"
        print"2. Message 2"
        print "======================================================================="
        choice = raw_input ("Enter the choice's Number:")

      if(int(choice)==1):
        print"\n Message 1 is viewed"
        if(int(choice)==2):
        print"\n Message 2 is viewed"
      else:
        print""

    def DriverLogin():
        xdriver = raw_input("Username:")
        xpass = raw_input("Password:")
        choice =0
      if (xpass==CorrectDriverLogin(xdriver, DriverLogin)):
        print"\n"
        print "============= You are now Logged in as a Driver ================"
        print"Choose an option:-"
        print "======================================================================"
        print "1. Send a Message"
        print "2. View Messages"
        print "3. Log out of the system"
        print "======================================================================"
        print "\n"
        choice = raw_input("Enter the choice's Number:")
      else:
        print"\n"
        print"Incorrect Username or Password"
        print"\n"
        print"You are logged out of the System Try To Log In Again Please"

      if(int(choice)==1):
        print" "
        sendMessageD()

      elif(int(choice)==2):
        print" "

      elif(int(choice)==3):
        print" "

    def homePage():
        print"\n"
        print "======================================================================="
        print "1. Send a Message"
        print "2. View Messages"
        print "3. Log Out of the System"
        print "======================================================================="
        print "\n"
        choice = raw_input("Enter the Choice's Number:")

    def sendMessageD():
        print "======================================================================="
        print"1. Write your message"
        print"2. Go Back"
        print "======================================================================="
        print" "
        choice = raw_input("Enter The Choice's Number:")

And here is the error I am getting: enter image description here

4
  • 1
    Haven't read the code yet, but did you remember to call the function? Commented May 13, 2014 at 23:16
  • 1
    Your indentation is broken. It's impossible to tell what's nested in what or where each block begins or ends. Commented May 13, 2014 at 23:18
  • 1
    The problems seems to be that you have two lists, and two functions with the same name. Commented May 13, 2014 at 23:21
  • 1
    Stop downvoting this,people. It's a legitimate on-topic question, and since the OP declared two objects called DriverLogin, the stacktrace isn't immediately clear. Commented May 13, 2014 at 23:27

3 Answers 3

4

In this line:

if (xpass==CorrectDriverLogin(xdriver, DriverLogin)):

You pass DriverLogin to CorrectDriverLogin without calling it, meaning you're passing the function and not the list/string returned by the function. So when you try and call len on it, it fails.

This likely happened because you also had a list named DriverLogin earlier in the script:

DriverLogin=[("ali", "ila"), ("bla", "alb")]

But you've now reassigned that name to be a function:

def DriverLogin():
    xdriver = raw_input("Username:")
    ...
Sign up to request clarification or add additional context in comments.

1 Comment

And he's got the same problem with PassLogin.
2

You named two things DriverLogin:

DriverLogin=[("ali", "ila"), ("bla", "alb")]
...
def DriverLogin():

When you tried to use the list, you got the function instead:

if (xpass==CorrectDriverLogin(xdriver, DriverLogin)):

Don't reuse names in the same namespace like that. Name your function and your list different things. Same with PassLogin.

Comments

2

Answer: You have the function name "DriverLogin" being passed into the "CorrectDriverLogin" function in the main body of the code.

:) This happens to all of us. I'm still learning, and no-one is more mighty than the next person (it's all show).

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.