收到错误"can't multiply sequence by non-int of type 'float'"?



在我的程序中,我以字符串形式给出了员工工资,并将其乘以int。

出现错误:

TypeError: can't multiply sequence of type 'float'

请帮我调试一下。

class Employee:
    raise_amt=1.2 # class variable
    def __init__(self,first,last,pay): 
        self.first=first
        self.last = last # instance variables
        self.pay = pay
        self.email = first+"."+last+"@company.com"
    def fullname(self):
        return '{}{}'.format(self.first,self.last)
    def apply_raise(self):
        self.pay= int(self.pay * self.raise_amt)

    @classmethod # alter the raise amt 
    def set_raise_amt(cls,amount):
        cls.raise_amt=amount
    @classmethod 
    def from_string(cls,emp_str):
        first,last,pay= emp_str.split('-')
        return cls(first,last,pay)
emp_str_1='Nanda-kishor-90000' #values are in string
new_emp_1=Employee.from_string(emp_str_1)
Employee.set_raise_amt(2.2)

print(new_emp_1.raise_amt)
print(new_emp_1.pay)
new_emp_1.apply_raise()
print('after raise:',new_emp_1.pay)
输出:

Traceback (most recent call last):
  File "C:/Users/nanda.v/PycharmProjects/Python basics/practice continue and break statements.py", line 39, in <module>
    new_emp_1.apply_raise()
2.2
  File "C:/Users/nanda.v/PycharmProjects/Python basics/practice continue and break statements.py", line 19, in apply_raise
    self.pay= int(self.pay * self.raise_amt)
90000
TypeError: can't multiply sequence by non-int of type 'float'

Python不会自动将字符串转换为数字。如果您希望它是浮点数或整数,则需要这样说。不过,Python在字符串相乘时并不总是有问题。将字符串相乘只是重复它:

>>> my_string = 'blah'
>>> my_string * 2
'blahblah'

代码中的问题是self.raise_amt是浮点数。以十进制数重复一个字符串是没有意义的,所以你会得到一个错误。

你需要的是转换pay为浮点数,当你得到它。这就是:float(pay)在你的__init__:

self.pay = float(pay)

如果pay参数不是一个有效的字符串,这将会出错,但这应该是预料之中的。

问题是,您的薪酬变量仍然是一个字符串时,创建您的类from_string。考虑修改构造函数:

def __init__(self,first,last,pay): 
    self.first=first
    self.last = last # instance variables
    self.pay = int(pay)

相关内容

最新更新