Question
Make the program that will output the values of my function display under the subclass items (Circle, Square, Cube) into a file, but when I
Make the program that will output the values of my function display under the subclass items (Circle, Square, Cube) into a file, but when I have a function (display) with multiple lines of return/ print statements the file will show "None" in place of any of the data.
class Shape:
def __init__(self):
self.__color = "red"
def set_color(self, color):
self.__color = color
def get_color(self):
return self.__color
def find_area(self):
pass
def find_volume(self):
pass
def display(self):
print(self.__color)
class Circle(Shape):
def __init__(self):
super().__init__()
self.__radius = 1
def set_radius(self, radius):
self.__radius = radius
def get_radius(self):
return self.__radius
def find_area(self):
return 3.14 * self.__radius ** 2
def display(self):
print("Type: Circle")
super().display()
print("Area:", self.find_area())
class Square(Shape):
def __init__(self):
super().__init__()
self.__side = 2.3
def set_side(self, side):
self.__side = side
def get_side(self):
return self.__side
def find_area(self):
return self.__side ** 2
def display(self):
print("Type: Square")
super().display()
print("Area:", self.find_area())
class Cube(Shape):
def __init__(self):
super().__init__()
self.__length = 2
self.__width = 2
self.__height = 2
def set_length(self, length):
self.__length = length
def set_width(self, width):
self.__width = width
def set_height(self, height):
self.__height = height
def get_length(self):
return self.__length
def get_width(self):
return self.__width
def get_height(self):
return self.__height
def find_volume(self):
return self.__length * self.__width * self.__height
def display(self):
print("Type: Cube")
super().display()
print("Volume:", self.find_volume())
circles = 0
squares = 0
cubes = 0
shapes = []
for i in range(15):
rand = random.randint(1, 3)
if rand == 1:
shapes.append(Circle())
elif rand == 2:
shapes.append(Square())
else:
shapes.append(Cube())
for shape in shapes:
if isinstance(shape, Circle):
circles += 1
elif isinstance(shape, Square):
squares += 1
else:
cubes += 1
print()
# Prompts user for file name
file_name = input("Enter file name: ")
with open((file_name + ".txt"), "w") as f:
# Writes results to text file
for shape in shapes:
if isinstance(shape,Circle):
shape_name='Circle'
if isinstance(shape,Square):
shape_name='Square'
else:
shape_name='Cube'
f.write('{}, Display{}, Area: {:.2f}'.format(shape_name, shape.display(),shape.find_area()))
f.write("Results:")
f.write("Circles: {}".format(circles))
f.write("Squares: {}".format(squares))
f.write("Cubes: {}".format(cubes))
Step by Step Solution
There are 3 Steps involved in it
Step: 1
To achieve your goal of redirecting the output of the display method to a file while handling multip...Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started