Python类和main函数没有运行?

时间:2016-11-18 14:41:39

标签: python python-3.5

#Homework 10 Question 6 Zachariah Huckstep
#Employee Management System

#Employee Class
class Employee():
    #Init method
    def __init__(self,empName,empID,empDept,empTitle):
        #Set self name, id number, department and job title
        self.name=empName
        self.idnum=empID
        self.dept=empDept
        self.title=empTitle

    #set_name method
    def set_name(self,empName):
        #Set the name
        self.__empName=empName

    #set_idnum method
    def set_idnum(self,empID):
        #Set the id number
        self.__empID=empID

    #set_dept method
    def set_dept(self,empDept):
        #Set the department
        self.__empDept=empDept

    #set_title method
    def set_title(self,empTitle):
        #Set the title
        self.__empTitle=empTitle

    #get_name method
    def get_name(self):
        #Get the name
        return self.__empName

    #get_idnum method
    def get_idnum(self):
        #Get the id number
        return self.__empID

    #get_dept method
    def get_dept(self):
        #Get the department
        return self.__empDept

    #get_title method
    def get_title(self):
        #Get the title
        return self.__empTitle

    #__str__ method
    def __str__(self):
        #Return object state as a string
        return "Name: "+self.__empName+\
               "\nID Number: "+self.__empID+\
               "\nDepartment: "+self.__empDept+\
               "\nJob Title: "+self.__empTitle

#Start of program
import pickle

#Menu choices
lookup=1
add=2
change=3
delete=4
quit=5

#File name
fileName='staff.db'

#main function
def main():
    #Load the existing employee database as a dictionary
    #and assign it to staff
    staff=load_staff()

    #Set users option
    opt=0

    #Process menu options until quit
    while opt != quit:
        #Get the user's menu option
        opt=get_menu_option()

        #Decide what to do
        if opt == lookup:
            lookup(staff)
        elif opt == add:
            add(staff)
        elif opt == change:
            change(staff)
        elif opt == delete:
            delete(staff)

    #Save staff dictionary to staff.db
    save_staff(staff)

#Load staff function
def load_staff():
    #Try opening staff.db
    try:
        #Open the staff.db file
        file=open(fileName,'rb')

        #Unpickle the dictionary
        staff_dct=pickle.load(file)

        #Close the staff.db file
        file.close()
    except IOError:
        #Could not find file, so make an
        #empty dictionary
        staff_dct={}

    #Return the staff database as a dictionary
    return staff_dct

#Print menu options and get opt
def get_menu_option():
    #Print menu
    print()
    print('Menu:')
    print('1. Look up an employee')
    print('2. Add a new employee')
    print('3. Change an existing employee')
    print('4. Delete an employee entry')
    print('5. Quit the Employee Management System')
    print()

    #Get opt
    opt=int(input('=>'))

    #Validate opt
    while opt < lookup or choice > quit:
       #Get valid opt
       opt=int(input('Enter valid choice: '))

    #Return opt
    return opt

#Lookup function
def lookup(staff):
    #Ask for the employee ID
    empID=input('Enter empoyee ID: ')

    #Search employee database for employee ID
    print(staff.get(empID,'Invalid ID Number.')

#Add function
def add(staff):
    #Ask for employee info
    print('Please enter the following new employee information:')
    empName=input('Name: ')
    empID=input('ID Number: ')
    empDept=input('Department: ')
    empTitle=input('Job Title: ')

    #Create a current employee object named currEmp
    currEmp=Employee(empName,empID,empDept,empTitle)

    #If the ID number is invalid, add it as a key
    #with the currEmp object as the value
    if empID not in staff:
        #Add currEmp into staff
        staff[empID]=currEmp
        print('New employee added.')
    else:
        #Print error
        print('That employee ID already exists.')

#Change function
def change(staff):
    #Ask for employee ID
    empID=input('Enter Employee ID: ')

    if empID in staff:
        #Ask for new name
        empName=input('Enter new name: ')
        #Ask for new department
        empDept=input('Enter new department: ')
        #Ask for new job title
        empTitle=input('Enter new job title: ')

        #Create an employee object named currEmp
        currEmp=Employee(empName,empID,empDept,empTitle)

        #Update the employee information
        staff[empID]=currEmp
    else:
        #Print error
        print('Error: Invalid employee ID.')

#Delete function
def delete(staff):
    #Ask for employee ID
    empID=input('Enter employee ID: ')

    #If the employee ID is found, delete it from staff
    if empID in staff:
        #Delete it
        del staff[empID]
        print('Employee deleted from database.')
    else:
        #Print error
        print('Error: Invalid employee ID.')

#Save staff function
def save_staff(staff):
    #Pickle the staff object and save it to staff.db
    #Open file for writing
    file=open(fileName,'wb')

    #Pickle staff database and save it
    pickle.dump(staff,file)

    #Close the file
    file.close()

#Call the main function
main()

这个程序是一个员工管理系统,我昨晚写完了,现在我无法运行它。它在第154行(添加功能)

运行时遇到问题

Python告诉我这个: def add(员工):   ^ SyntaxError:语法无效

请帮忙。

2 个答案:

答案 0 :(得分:3)

你错过了一个圆括号。

#Search employee database for employee ID
print(staff.get(empID,'Invalid ID Number.')

应该是:

#Search employee database for employee ID
print(staff.get(empID,'Invalid ID Number.'))

答案 1 :(得分:0)

错误在您的查找功能中,您没有将第二个右括号放在print()中。以下是更正后的代码

    #Lookup function
    def lookup(staff):
        #Ask for the employee ID
        empID=input('Enter empoyee ID: ')

       #Search employee database for employee ID
       print(staff.get(empID,'Invalid ID Number.'))

我只添加了lookup()函数。

希望有所帮助:)