【发布时间】:2021-07-07 09:52:28
【问题描述】:
我是 Thomas,是一名计算机科学专业的学生。对于我最新的 Python OOP 项目,我一直在尝试做一个简单的复数计算器。
我的任务是用 Python 制作一个 2-class 项目
首先是类有3个方法:
1st - 创建一个复数 2nd - 显示一个复数 3rd - 删除复数
第二类有四种方法:加法、减法、乘法和除法。 我做了第一堂课,它的方法,我认为它们在基本层面上工作得很好(当然代码是原始的,它需要做很多工作:()
我偶然发现了第二节课的问题。我不能正确使用方法:加、减、乘和除。 我想要使用以前创建的两个复数的数学方法,但我找不到正确完成任务的方法。
感谢任何帮助。谢谢!
我的代码:
class Complex (object):
def __init__(self, real, imaginary):
self.real = real
self.imaginary = imaginary
def create_number(self):
self.real = (float(input("Enter a real part of the complex number")))
self.imaginary = (float(input("Enter an imaginary part of the complex number")))
return Complex(self.real, self.imaginary)
def display_number(self):
print(f"Your complex number is: {Complex(self.real, self.imaginary)}")
def erase_number(self):
(self.real, self.imaginary) = (0, 0)
print(f"Number is erased: {(self.real, self.imaginary)}")
def __str__(self):
if type(self.real) == int and type(self.imaginary) == int:
if self.imaginary >= 0:
return '%d+%di' % (self.real, self.imaginary)
elif self.imaginary < 0:
return '%d%di' % (self.real, self.imaginary)
else:
if self.imaginary >= 0:
return '%f+%fi' % (self.real, self.imaginary)
elif self.imaginary < 0:
return '%f%fi' % (self.real, self.imaginary)
class Calculator(object):
def __init__(self, real, imaginary):
self.real = real
self.imaginary = imaginary
def __add__(self, other):
result_real = self.real+other.real
result_imaginary = self.imaginary+other.imaginary
result = Complex(result_real, result_imaginary)
return result
def __sub__(self, other):
result_real = self.real-other.real
result_imaginary = self.imaginary-other.imaginary
result = Complex(result_real, result_imaginary)
return result
def __mul__(self, other):
result_real = (self.real*other.real-self.imaginary*other.imaginary)
result_imaginary = (self.real*other.imaginary+other.real*self.imaginary)
result = Complex(result_real, result_imaginary)
return result
def __truediv__(self, other):
result_real = float(float(self.real*other.real+self.imaginary*other.imaginary)/float(other.real*other.real+other.imaginary*other.imaginary))
result_imaginary = float(float(other.real*self.imaginary-self.real*other.imaginary)/float(other.real*other.real+other.imaginary*other.imaginary))
result = Complex(result_real, result_imaginary)
return result
c1 = Complex(0, 0)
c2 = Complex(0, 0)
calc1 = Calculator(0, 0)
calc2= Calculator(0, 0)
choice = 1
while choice != 0:
print("0. Exit")
print("1. Construction of a complex number 1")
print("2. Construction of a complex number 2")
print("3. Display complex number 1")
print("4. Display complex number 2")
print("5. Erase complex number 1")
print("6. Erase complex number 2")
print("7. Addition")
print("8. Subtraction")
print("9. Multiplication")
print("10. Division")
choice = int(input("Enter choice: "))
if choice == 1:
print("Result: ", c1.create_number())
elif choice == 2:
print("Result: ", c2.create_number())
elif choice == 3:
print("Result: ", c1.display_number())
elif choice == 4:
print("Result: ", c2.display_number())
elif choice == 5:
print("Result: ", c1.erase_number())
elif choice == 6:
print("Result: ", c2.erase_number())
elif choice == 7:
print("Result: ", calc1.__add__(calc2))
elif choice == 8:
print("Result: ", calc1.__sub__(calc2))
elif choice == 9:
print("Result: ", calc1.__mul__(calc2))
elif choice == 10:
print("Result: ", calc1.__truediv__(calc2))
elif choice == 0:
print("Exiting!")
else:
print("Invalid choice!!")
【问题讨论】:
-
“我无法正确使用方法:添加,...” - 你的问题到底是什么?
-
例如,当我在 if 循环中使用选项 7 时,add 方法返回值 0.0。我找不到创建正确 Calculator 对象的方法,或者代码可能需要更改,因为我找不到解决问题的方法。
-
一些关于接近 OOP 的一般建议:尝试将关系建模为现实世界中的关系。在这种情况下:用户将只有一个计算器,并且计算器应该创建/记住用户可以输入的任何数字
-
谢谢您,这是一个宝贵的建议。可悲的是,目前,我正在努力让我的代码正常工作,但将来我的代码将反映现实生活中的规则:)
标签: python oop complex-numbers