谁能告诉我为什么代码只运行
operation_perform
下的内容而不是后面的内容?
import math
class Shape:
def operation_perform(self):
m = input('''
Select the shape:
1. Select 1 for area.
2. Select 2 for perimeter.
''')
if m == '1':
def area(self, a, b = 0):
n = input('''
select the shape:
1. Select 1 for circle.
2. Select 2 for square.
3. Select 3 for rectangular.
''')
if n == '1':
print('area of circle: ', math.pi * self.a**2)
if n == '2':
print('area of square: ', self.a**2)
if n == '3':
print('area of rectangular: ', math.pi * self.a * self.b)
elif m == '2':
def perimeter(self, a, b = 0):
n = input('''
select the shape:
1. Select 1 for circle.
2. Select 2 for square.
3. Select 3 for rectangular.
''')
if n == '1':
print('perimeter of circle: ', 2 * math.pi * self.a)
if n == '2':
print('perimeter of square: ', 4 * self.a)
if n == '3':
print('perimeter of rectangular: ', 2*(self.a + self.b))
else:
exit()
s = Shape()
s.operation_performed()
我得到的输出如下所示:
output:
Select the shape:
1. Select 1 for area.
2. Select 2 for perimeter.
1
为什么我的程序没有进入
area()
或 perimeter()
函数?我不能在不使用构造函数的情况下做到这一点吗?
问题是您在
area
方法内定义了 perimeter
和 operations_perform
方法,但没有调用它们。
应用更正:
import math
class Shape:
def operation_perform(self):
m = input('''
Select the shape:
1. Select 1 for area.
2. Select 2 for perimeter.
''')
if m == '1':
self.area()
elif m == '2':
self.perimeter()
else:
exit()
def area(self):
a = float(input("Enter the first dimension: "))
b = float(input("Enter the second dimension (if any, else enter 0): "))
n = input('''
select the shape:
1. Select 1 for circle.
2. Select 2 for square.
3. Select 3 for rectangular.
''')
if n == '1':
print('area of circle: ', math.pi * a**2)
if n == '2':
print('area of square: ', a**2)
if n == '3':
print('area of rectangular: ', a * b)
def perimeter(self):
a = float(input("Enter the first dimension: "))
b = float(input("Enter the second dimension (if any, else enter 0): "))
n = input('''
select the shape:
1. Select 1 for circle.
2. Select 2 for square.
3. Select 3 for rectangular.
''')
if n == '1':
print('perimeter of circle: ', 2 * math.pi * a)
if n == '2':
print('perimeter of square: ', 4 * a)
if n == '3':
print('perimeter of rectangular: ', 2*(a + b))
s = Shape()
s.operation_perform()
编辑:OOP'd
import math
class Shape:
def area(self):
pass
def perimeter(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
def perimeter(self):
return 2 * math.pi * self.radius
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side ** 2
def perimeter(self):
return 4 * self.side
class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width
def area(self):
return self.length * self.width
def perimeter(self):
return 2 * (self.length + self.width)
circle = Circle(5)
print('Circle area:', circle.area())
print('Circle perimeter:', circle.perimeter())
square = Square(4)
print('Square area:', square.area())
print('Square perimeter:', square.perimeter())
rectangle = Rectangle(4, 2)
print('Rectangle area:', rectangle.area())
print('Rectangle perimeter:', rectangle.perimeter())
您正在创建
area
和 perimeter
函数,但从未调用它们。