请按照以下要求设计一个计算器类Calculator。 要求如下: (1) 计算器类有三个属性,分别是操作数1(num1)、操作数2(num2)、操作符(option),使用封装的思想将所有属性私有化,并对外界提供共有的访问getter和setter方法。在操作符的set方法中要检测操作符的合法性,必须是+、-、*、/中的一个,否则输出操作符出错。 (2)定义带参的构造方法,用于对操作符属性进行初始化,在初始化时也要对操作符进行检测。 (3) 计算器类中有一个计算的方法calculate(),用于执行加减乘除运算,并返回计算结果。 (4) 在main()方法中,创建Calculator的实例对象,并为num1和num2赋值,然后调用calculate ()方法获取执行结果并输出。
时间: 2024-02-23 21:02:45 浏览: 95
好的,我已经理解了您的要求。下面是我给您设计的计算器类Calculator的代码:
```python
class Calculator:
def __init__(self, num1, num2, option):
self.__num1 = num1
self.__num2 = num2
self.__option = option
if option not in ['+', '-', '*', '/']:
print("操作符出错!")
def get_num1(self):
return self.__num1
def set_num1(self, num1):
self.__num1 = num1
def get_num2(self):
return self.__num2
def set_num2(self, num2):
self.__num2 = num2
def get_option(self):
return self.__option
def set_option(self, option):
if option not in ['+', '-', '*', '/']:
print("操作符出错!")
else:
self.__option = option
def calculate(self):
if self.__option == '+':
return self.__num1 + self.__num2
elif self.__option == '-':
return self.__num1 - self.__num2
elif self.__option == '*':
return self.__num1 * self.__num2
elif self.__option == '/':
if self.__num2 == 0:
print("除数不能为0!")
else:
return self.__num1 / self.__num2
```
在上面的代码中,我使用了私有属性和封装的思想,对外提供了共有的getter和setter方法,其中set_option()方法中进行了操作符的合法性检测。还定义了calculate()方法,用于执行加减乘除运算,并返回计算结果。
下面是一个样例程序,用于测试Calculator类的功能:
```python
c = Calculator(10, 5, '+') # 创建Calculator的实例对象
print(c.calculate()) # 输出15
c.set_num1(20) # 修改num1的值
c.set_option('-') # 修改option的值
c.set_num2(8) # 修改num2的值
print(c.calculate()) # 输出12
```
在上面的代码中,首先创建了一个Calculator的实例对象,并为num1和num2赋值,同时指定了操作符为+。然后调用calculate()方法获取执行结果并输出。接着,通过setter方法修改了num1、num2和option的值,并再次调用calculate()方法获取执行结果并输出。
希望这个计算器类能够满足您的需求,如果有任何疑问,请随时提出。
阅读全文