#!/usr/bin/env python import sys desiredArgument = 3 possibleType = '0', '1' class Employee: def __init__(self, firstName = None, lastName = None, monthlySalary = 0.0): self.firstName = firstName self.lastName = lastName self.monthlySalary = monthlySalary def getFirstName(self): return self.firstName def getLastName(self): return self.lastName def getMonthlySalary(self): return self.monthlySalary def getEarnings(self): return self.getMonthlySalary() * 12 def __repr__(self): return self.getFirstName() + ' ' + self.getLastName() \ + " earns $" + str(self.getMonthlySalary()) + " a month." class Boss(Employee): def __init__(self, firstName = None, lastName = None, monthlySalary = 0.0, annualBonus = 0.0): Employee.__init__(self, firstName, lastName, monthlySalary); self.annualBonus = annualBonus; def getAnnualBonus(self): return self.annualBonus def getEarnings(self): return Employee.getEarnings(self) + self.getAnnualBonus() def __repr__(self): return Employee.__repr__(self) \ + " Also, he/she has $" + `self.getAnnualBonus()` + " of annual bonus." def checkCommandLine(argv): if len(argv) != desiredArgument: print "Usage: " + argv[0] + " inputFile outputFile" sys.exit(0) def openFile(fileName, accessMode): return open(fileName, accessMode) def getInformation(inFile): employeeType = inFile.readline() firstName = inFile.readline() lastName = inFile.readline() monthlySalary = inFile.readline() employeeType = employeeType.replace('\n', '') firstName = firstName.replace('\n', '') lastName = lastName.replace('\n', '') monthlySalary = monthlySalary.replace('\n', '') return employeeType, firstName, lastName, monthlySalary def putResult(outFile, myEmployee): print myEmployee print "Therefore, annual earnings is $" + str(myEmployee.getEarnings()) print outFile.write(myEmployee.__repr__() + '\n') outFile.write("Therefore, annual earnings is $" + str(myEmployee.getEarnings()) + '\n') outFile.write('\n') def processFile(inFile, outFile): while True: employeeType, firstName, lastName, monthlySalary = getInformation(inFile) if employeeType not in possibleType: break if employeeType == '1': annualBonus = inFile.readline() annualBonus = annualBonus.replace('\n', '') myEmployee = Boss(firstName, lastName, float(monthlySalary), float(annualBonus)) else: myEmployee = Employee(firstName, lastName, float(monthlySalary)) putResult(outFile, myEmployee) def testEmployee(argv): checkCommandLine(argv) inFile = openFile(argv[1], 'r') outFile = openFile(argv[2], 'w') processFile(inFile, outFile) if __name__ == "__main__": testEmployee(sys.argv)