Python词典和格式

时间:2017-04-18 05:00:41

标签: python dictionary

我正在尝试解决以下问题: 创建一个将Employee对象存储在字典中的程序。使用员工ID号作为密钥。该程序应提供一个菜单,让用户执行以下操作:

  • 在字典中查找员工
  • 将新员工添加到词典
  • 更改现有员工的姓名,部门和职位 字典
  • 从字典中删除员工
  • 退出程序

当程序结束时,它应该腌制字典并将其保存到文件中。每次程序启动时,都应该尝试从文件中加载pickle字典。如果文件不存在,程序应该以空字典开头。

我发现另一位用户发布了问题here,但我遇到了一些不同的问题。

  1. 我该如何退出该计划?我试过休息,但失败了 这次得分。
  2. 我知道我的格式是残酷的,但我无法弄清楚它的位置 出错了。
  3. 这是我到目前为止所做的:

    def main():
        if os.path.exists("employee.dat"):
            file = open("employee.dat","rb")
            employee_dictionary = pickle.load(file)
            file.close()
    
        else:
            emp1 = Employee("Susan Myers", 47899, "Accounting", "Vice President")
            emp2 = Employee("Mark Jones", 39119, "IT", "Programmer")
            emp3 = Employee("Joy Rogers", 81774, "Manufacturing", "Engineer")
    
            employee_dictionary = {emp1.get_ID_number(): emp1.get_name()+ '' + emp1.get_dept()+ '' + emp1.get_job_title(),\
                                   emp2.get_ID_number(): emp2.get_name()+ '' + emp2.get_dept()+ '' + emp2.get_job_title(),\
                                   emp3.get_ID_number(): emp3.get_name()+ '' + emp3.get_dept()+ '' + emp3.get_job_title()}
    
    #should I add another function here to call the employee_dictionary?
    choice = 'y'
    while choice.upper()== 'Y':
        print("Make a selection from the following actions:")
        print("Lookup an employee in the dictionary: 1")
        print("Add a new employee to the dictionary: 2")
        print("Change an existing employee's name, department, and job title in the dictionary: 3")
        print("Delete an employee from the dictionary: 4")
        print("Quit the program: 5")
        selection = input("Make your selection: ")
    
        if int(selection) == 1:
            id_number = input("What is the employee's ID number?")
    
            if int(id_number) in employee_dictionary.keys():
                print(employee_dictionary[int(id_number)])
    
            else:
                print("The employee does not exist.")
    
        else:
            if int(selection) == 2:
                id_number = input("What is the employee's ID number?")
    
                if int(id_number) in employee_dictionary.keys():
                    print('That employee already exists.')
    
                else:
                    name = input("Enter the name of the employee:")
                    dept = input("Enter the department of the employee:")
                    title = input("Enter the job title of the employee:")
                    emp4 = Employee(name,int(id_number), dept, title)
                    employee_dictionary[emp4.get_ID_number()]= emp1.get_name()+ '' + emp4.get_dept()+ '' + emp4.get_job_title()
    
                    print("The employee was added.")
    
            else:
                if int(selection) == 3:
                    id_number = input("What is the employee's ID number?")
    
                    if int(id_number) in employee_dictionary.keys():
                        name = input("Enter the name of the employee:")
                        dept = input("Enter the department of the employee:")
                        title = input("Enter the job title of the employee:")
                        emp4 = Employee(name,int(id_number), dept, title)
                        employee_dictionary[emp4.get_ID_number()]= emp1.get_name()+ '' + emp4.get_dept()+ '' + emp4.get_job_title()
    
                        print("The employee record has been updated.")
    
                    else:
                        print("Record not found.")
    
                else:
                    if int(selection) == 4:
                        id_number = input("What is the employee's ID number?")
                        print("Deleted: ", employee_dictionary.pop(int(id_number),"Record not found."))
    
                    else:
                        if int(selection)!=5:
                            print("")
    
        #break
    
    choice = input("Do you want to make another selection (y or n)?")
    file = open('employee.dat','wb')
    pickle.dump(employee_dictionary,file)
    file.close()
    
    main()
    

0 个答案:

没有答案