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

14 浏览
0 Comments

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

这个问题已经有答案了:

Python中两个参数的乘法[duplicate]

这是我的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)

我想在调用apply_raise方法后得到结果5000 * 3 = 15000,但是我得到的是三个5000,如下所示:

500050005000

admin 更改状态以发布 2023年5月23日
0
0 Comments

你应该这样使用:

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)

0
0 Comments

你可以通过用单引号将其括起来来初始化pay字符串。

在Python中,字符串* int是一种有效的操作,它将字符串重复int值次数。这就是你的输出结果。

如果你想让pay是数字型的,在初始化对象时去掉单引号。然后当然就会发生数值化乘法。

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

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

0