Python 我将如何着手修复这段代码?

Python 我将如何着手修复这段代码?,python,Python,如果选择employee,下面的代码应该输出以下内容 Do you wish to enter data for an (E)mployee, a (S)alesperson, or would you like to (Q)uit?: e Enter the name of the employee: (employee name) Enter (employee name) hourly pay rate: (pay rate) Enter (employee name) hours wo

如果选择employee,下面的代码应该输出以下内容

Do you wish to enter data for an (E)mployee, a (S)alesperson, or would you like to (Q)uit?: e
Enter the name of the employee: (employee name)
Enter (employee name)  hourly pay rate: (pay rate)
Enter (employee name) hours worked: (hours worked ```

Employee data: 
Employee name: (employee name)
Employee hourly pay: (hourly pay)
Hours worked: (hours worked)
Pay: (pay)
也就是说,如果您选择为员工输入数据^^^

如果您希望为销售人员选择以下数据,请参见以下输出

Do you wish to enter data for an (E)mployee, a (S)alesperson, or would you like to (Q)uit?: s
Enter the name of the employee: (employee name)
Enter (employee name) hourly pay rate: (hourly pay)
Enter the number of hours worked by (employee name): (hours worked)
Enter the amount of sales made by (employee name): (sales made)
Enter the commission percentage that will be earned by (employee name): (commission percentage)

Salesperson data:
Employee name: (employee name)
Employee hourly pay: (hourly pay)
Hours worked: (hours worked)
Sales: (sales made)
Commission percentage: (commission percent)
Pay: (pay)
下面是执行所有这些操作的整个代码块。请记住,这必须使用类和多态性来完成

class Employee:

    def __init__(self, hours_worked, hourly_rate):
        self.__hours_worked = 0
        self.__hourly_rate = 0

    def set_hours_worked(self, hours_worked):
        self.__hours_worked = hours_worked

    def get_hours_worked(self):
        return self.__hours_worked

    def set_hourly_rate(self, hourly_rate):
        self.__hourly_rate = hourly_rate

    def get_hourly_rate(self):
        return self.__hourly_rate

    def calc_pay(self):
        return self.__hourly_rate * self.__hours_worked

    def __str_(self):
        print()
        string1 = 'Employee data: ' + '\n' + 'Employee name: ' + employee_name + '\n' + 'Employee hourly pay rate: ' + employee_pay + '\n' + 'Hours worked: ' + employee_hours + '\n' + 'Pay: ' + employee_pay


class Salesman(Employee):

    def __init__(self, weekly_sales, commission, hours_worked, hourly_rate):
        Employee.__init__(self, hours_worked, hourly_rate)
        self.__weekly_sales = 0
        self.__commission = 0

    def set_weekly_sales(self, weekly_sales):
        self.__weekly_sales = weekly_sales

    def get_weekly_sales(self):
        return self.__weekly_sales

    def set_commission(self, commission):
        self.__commission = commission

    def get_commission(self):
        return self.__commission

    def calc_pay(self):
        return Employee.calc_pay(self) + (self.__weekly_sales * self.__commission)

    def __str__(self):
        print()
        string2 = 'Salesperson data: ' + '\n' + 'Employee name: ' + salesperson_name + '\n' + 'Employee hourly pay rate: ' + str(
            salesperson_pay) + '\n' + 'Hours worked: ' + salesperson_hours + '\n' + 'Sales: ' + salesperson_sales + '\n' + 'Commission percentage: ' + str(
            salesperson_commission) + '\n' + 'Pay: ' + str(salesperson_pay)


go_on = 'y'

while go_on == 'y':
    input1 = input('Do you wish to enter data for an (E)mployee, a (S)alesperson, or would you like to (Q)uit?: ')
    if input1 == 'e' or 'E':
        employee_name = input('Enter the name of the employee: ')
        employee_pay = input('Enter ' + employee_name + ' hourly pay rate: ')
        employee_hours = input('Enter the number of hours worked by ' + employee_name + ': ')
        employee_pay_rate = employee_pay * int(employee_hours)
        employee = Employee(employee_name, employee_pay, employee_hours, employee_pay_rate)
        print(employee)
    if input1 == 's' or 'S':
        salesperson_name = input('Enter the name of the employee: ')
        salesperson_pay = float(input('Enter ' + salesperson_name + ' hourly pay rate: '))
        salesperson_hours = input('Enter the number of hours worked by ' + salesperson_name + ': ')
        salesperson_sales = input('Enter the amount of sales made by ' + salesperson_name + ': ')
        salesperson_commission = float(input('Enter the commission percentage that will be earned by ' + salesperson_name + ': '))
        salesperson = Salesman(salesperson_pay, salesperson_hours, salesperson_sales, salesperson_commission)
        print(salesperson)
    else:
        go_on = 'n'

我确信我基本上都做对了,但我遇到了一些问题,我不知道如何解决它们。

错误:您正在将while循环中的5个参数传递给包含
self
的员工

  • 当将输入作为用户的字符串时,请改用
    raw\u input
    输入的<代码>数量

  • input1==“e”或“e”
    始终为
    true
    。Do
    input1==“e”或input1==“e”

    这样,您就可以利用while循环来添加所需的用户

  • 还有一些额外的要点:

    • 您有一个基类
      Employee
      ,其构造函数或
      init
      接受
      (自我、工作小时数、小时费率)
    推荐:
    (个人、姓名、工作时间、小时费率)

    • 在class
      saller
      \uuuu init\uuuu
      方法中,尝试在父类
      Employees
      参数优先的位置保持传递的参数顺序
    推荐:`级销售员(员工):


    您面临的问题是什么?My uu init uuuuuuuuuuuuuuuuo()函数有3个参数,但它有5个@onlinejudge95。就您的
    Employee
    类而言,它确实有3个参数,您可以在Employee=Employee(Employee\u name,Employee\u pay,Employee\u hours,Employee\u pay\u rate)中发布回溯
    第70行吗TypeError:uuu init_uuuuuu()接受3个位置参数,但给出了5个
    @onlinejudge95@KeghanPettit这是因为您在
    while
    循环中将5个参数传递给
    Employee
    ,其中包含
    self
    ,谢谢,但这不是本实验室所需要的。如果这是一个实际的项目,我会在课外进行但这根本不需要。现在我输入了一个员工的数据,我得到了一条消息,这不是一个错误,但这是它说的“我如何解决这个问题,以便str命令打印输出应该是什么,而不是什么?当我尝试为一个销售人员输入数据时,我也会得到一条错误消息,因为没有定义员工名称@spiritsreedo
    def\u str”__(自我):
    instaead of
    def\uu str\uu(自我):
    def __init__(self, name, hours_worked, hourly rate, weekly_sales, commission):
        Employee.__init__(self, name, hours_worked, hourly_rate)
        self.__weekly_sales = 0
        self.__commission = 0`