如何修改Python代码实现批量输入6名以上Employee类员工并统一打印?
问题
我正在通过Python中名为Employee的类实现员工信息的多用户输入,需求是输入至少6名员工后一次性打印所有员工信息,但当前代码每输入一名员工就立即打印其信息,请问该如何修改代码来实现需求?
当前代码:
class Employee: def __init__ (self, number, first, middle, last, address, rate, salary): self.number = number self.first = first self.middle = middle self.last = last self.address = address self.rate = rate self.salary = rate*28 def fullname(self): return '{} {} {} {} {} {} {} {}'.format("Empoloyee Number: " + self.number + "\n", "First Name: " + self.first +"\n", "Middle Name: " + self.middle + "\n", "Last Name: "+ self.last + "\n", "Address: " + self.address + "\n Rate: ", self.rate, "\n Salary: ", self.salary) i=1 while i <7: number = input("Enter Employee Number: ") first = input("Enter First Name: ") middle = input("Enter Middle Name: ") last = input("Enter Last Name: ") address = input("Enter Address: ") rate = float(input("Enter Rate: ")) salary = rate*28 emp = (Employee(number, first, middle, last, address, rate, salary)) print (emp.fullname()) i+=1
解决方案
核心逻辑是先把所有员工对象存储到容器中,等全部输入完成后再统一打印,具体修改步骤如下:
- 初始化一个空列表,用来保存所有创建的
Employee对象 - 移除循环内的即时打印代码,将创建好的员工对象添加到列表中
- 循环结束后,遍历列表逐个打印员工信息
同时可以优化两个细节:
- 原
__init__方法内已经计算了薪资,外部无需重复计算salary = rate*28,创建对象时直接传入rate即可 - 修正
fullname方法里的拼写错误(Empoloyee改为Employee)
修改后的完整代码:
class Employee: def __init__ (self, number, first, middle, last, address, rate): self.number = number self.first = first self.middle = middle self.last = last self.address = address self.rate = rate self.salary = rate * 28 # 内部计算薪资,无需外部传入 def fullname(self): return '{} {} {} {} {} {} {}'.format( "Employee Number: " + self.number + "\n", "First Name: " + self.first + "\n", "Middle Name: " + self.middle + "\n", "Last Name: "+ self.last + "\n", "Address: " + self.address + "\n", "Rate: " + str(self.rate) + "\n", "Salary: " + str(self.salary) ) # 初始化空列表存储员工对象 employees = [] i = 1 while i < 7: number = input("Enter Employee Number: ") first = input("Enter First Name: ") middle = input("Enter Middle Name: ") last = input("Enter Last Name: ") address = input("Enter Address: ") rate = float(input("Enter Rate: ")) # 创建员工对象并添加到列表 emp = Employee(number, first, middle, last, address, rate) employees.append(emp) i += 1 # 输入完成后统一打印所有员工信息 print("===== 所有员工信息 =====") for emp in employees: print(emp.fullname()) print("------------------------")
内容的提问来源于stack exchange,提问作者Hail Mary
相关产品推荐
相关产品推荐

