类型错误:需要浮点数

时间:2014-12-08 03:35:34

标签: python

这是我得到的错误:

Running...done.
Traceback (most recent call last):
  File "main.py", line 13, in <module>
    print('Alice:\n Net pay: $%7.2f' % alice.calculate_pay())
TypeError: a float is required

奇怪的错误,我不知道该怎么做。我显然是从Python开始,到目前为止,错误跟踪很容易,减去这一点。这是下面的代码:

class Employee:
   def __init__(self):
       self.wage = 0
       self.hours_worked = 0

   def calculate_pay(self):
      self.calculate_pay = (self.wage * self.hours_worked)


alice = Employee()
alice.wage = 9.25
alice.hours_worked = 35
print('Alice:\n Net pay: $%7.2f' % alice.calculate_pay())

bob = Employee()
bob.wage = 11.50
bob.hours_worked = 20
print('Bob:\n Net pay: $%7.2f' % bob.calculate_pay())

4 个答案:

答案 0 :(得分:4)

您错过了return声明:

def calculate_pay(self):
  self.calculate_pay = (self.wage * self.hours_worked)
  return self.calculate_pay

答案 1 :(得分:2)

您正在调用calculate_pay方法并且它没有返回任何内容,这意味着它默认返回None

请从函数返回值并使用它或使用变量或方法

变量使用

alice.calculate_pay()
print('Alice:\n Net pay: $%7.2f' % alice.calculate_pay)

从功能返回

def calculate_pay(self):
    return (self.wage * self.hours_worked)

答案 2 :(得分:1)

更改

def calculate_pay(self):
    self.calculate_pay = (self.wage * self.hours_worked)

def calculate_pay(self):
      self.calculate_pay = (self.wage * self.hours_worked)
      return self.calculate_pay

初始值不可调用且等于NoneType。即使存储到self.calculate_pay的值是浮点数,也不能像那样引用它。

答案 3 :(得分:0)

将方法和实例变量更改为不同的名称,并在calculate_pay方法中生成return语句:

def calculate_pay(self):
    self.calculated_pay = (self.wage * self.hours_worked)
    return  self.calculated_pay