TypeError:类型'函数'的对象在python中没有len()

时间:2014-05-13 23:15:10

标签: python function typeerror

我正在用python编写一个程序,它会执行一些操作,例如登录为学生,登录为驱动程序。但是当我尝试运行代码时,我遇到了几个问题。我正在写下面的代码。而且我也给你错误的截图。如果可以,请帮忙。

提前致谢。

 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:")

这是我得到的错误: enter image description here

3 个答案:

答案 0 :(得分:3)

在这一行:

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

您将DriverLogin传递给CorrectDriverLogin而不调用它,这意味着您传递的是函数,而不是函数返回的列表/字符串。因此,当您尝试在其上调用len时,它会失败。

这可能是因为您在脚本中还有一个名为DriverLogin的列表:

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

但是你现在已经将该名称重新分配为一个功能:

def DriverLogin():
    xdriver = raw_input("Username:")
    ...

答案 1 :(得分:2)

您将两件事命名为DriverLogin

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

当您尝试使用该列表时,您获得了该功能:

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

不要在同一名称空间中重用名称。为您的功能和列表命名不同的东西。与PassLogin相同。

答案 2 :(得分:2)

答案: 你有函数名称" DriverLogin"被传递到" CorrectDriverLogin"函数在代码的主体中。

:) 这发生在我们所有人身上。我还在学习,没有人比下一个人更强大(它全部显示)。