尝试将字符串和整数相乘时出现问题

时间:2020-01-24 17:30:35

标签: python

这是我的Employee班:

class Employee:
     def __init__(self, first, last, pay):
        self.first = first                              # Instance Variable 
        self.last = last                                # Instance Variable 
        self.pay = pay                                  # Instance Variable 
        self.email = first + '.' + last + '@gmail.com'  # Instance Variable 

    def fullname(self):                                  #method inside the class
        return '{} {}'.format(self.first, self.last)

    def apply_raise(self):
        self.pay = int(self.pay * 3 )

emp_1 = Employee('Corey', 'Schafer' , '5000')  

emp_1.apply_raise()
print(emp_1.pay)

我想在调用方法5000 * 3 = 15000之后得到结果apply_raise,但我却得到了3次这样的5000次结果:

500050005000

2 个答案:

答案 0 :(得分:2)

您应该使用此:

self.pay = int(self.pay)*3

您正在做的是将字符串乘以3次,这意味着将字符串紧挨着3次!! 然后将结果转换为整数! 这是代码运行的顺序:

self.pay * 3 -> 500050005000 (as a string)
int(self.pay * 3 ) -> 500050005000 (as an int)


如果希望类保持一致,则应将结果转换为字符串,因为第一个self.py是字符串:

self.pay = str(int(self.pay)*3)

答案 1 :(得分:2)

通过将薪水括在撇号中将其初始化为字符串。

python中的

String * int是有效的操作,它将string重复int值的次数。您将在输出中得到什么。

如果您希望薪水为数字,请在初始化对象时删除撇号。然后当然会发生数字乘法。

您正在尝试将结果转换为int,但是首先应确保该参数已经是:

self.pay = int(self.pay) * 3