Как печатать на Python с помощью класса и функции печати

#python #python-3.x #class #object #if-statement

Вопрос:

 class HexagonInteriorAngle(object):  def __init__(self, x):  self.x = self    def FindInteriorAngle(self):  degrees = int((x - 2) * 180)  interior = int(degrees / x)    def Print(self):  if x == 3:  print(str("an interior angle of a triangle equals "   str(interior)))  elif x == 4:  print("an interior angle of an equilateral equals "   str(interior))  elif x == 5:  print("an interior angle of a pentagon equals "   str(interior))  elif x == 6:  print("an interior angle of a hexagon equals "   str(interior))  elif x == 7:  print("an interior angle of a heptagon equals "   str(interior))  elif x == 8:  print("an interior angle of an octagon equals "   str(interior))  elif x == 9:  print("an interior angle of a nonagon equals "   str(interior))  elif x == 10:  print("an interior angle of a decagon equals "   str(interior))  else:  print(str(interior))  if __name__ == "__main__":  x = int(input("enter: "))  hexaObj = HexagonInteriorAngle(x)  hexaObj.FindInteriorAngle()  hexaObj.Print()  

Я хочу, чтобы программа определила, какой тип многоугольника основан на количестве сторон (например, 6 сторон = шестиугольник, 5 сторон = пятиугольник и т. Д.), А затем напечатала, какой внутренний угол будет для этого многоугольника (формула для нахождения внутреннего угла : (количество сторон — 2) х 180, А затем приняла этот ответ, а затем разделила его на количество сторон). пример: шестиугольник. ( 6 — 2 ) х 180 = 720 720 / 6 = 120

Прямо сейчас я почти уверен, что фактическая часть кода верна, потому что, если вы сделаете это, она будет отлично печататься:

 class HexagonInteriorAngle(object):  def __init__(self, x):  self.x = self    def FindInteriorAngle(self):  degrees = int((x - 2) * 180)  interior = int(degrees / x)  print("interior angle "   str(interior))  if __name__ == "__main__":  x = int(input("enter: "))  hexaObj = HexagonInteriorAngle(x)  hexaObj.FindInteriorAngle()  

Комментарии:

1. вы должны return interior в конце FindInteriorAngle , а затем распечатать это Print . print(self.FindInteriorAngle())

Ответ №1:

Вы должны это сделать:

 def FindInteriorAngle(self):  degrees = int((x - 2) * 180)  interior = int(degrees / x)  return interior   # ... if __name__ == "__main__":  x = int(input("enter: "))  hexaObj = HexagonInteriorAngle(x)  interior = hexaObj.FindInteriorAngle()  print("interior angle "   str(interior))  

Ответ №2:

Почти не связанные с вашим ответом, мы могли бы немного очистить ваш код с использованием некоторых property полей. Использование __str__ вместо Print метода также является более идиоматичным.

 class Polygon:  shapes = [  None, # index 0  None, # index 1  "line", # index 2, etc...  "triangle",  "rectangle",  "pentagon",  "hexagon",  "heptagon",  "octogon",  "nonagon",  "decagon",  ]  def __init__(self, sides):  if not 2 lt;= sides lt;= 10:  raise ValueError("Polygon only supports shapes with sides 2-10")  self.sides = sides   @property  def shape(self):  return self.shapes[self.sides]   @property  def interior_angle(self):  return (self.sides - 2) * 180 / self.sides   def __str__(self):  return f"The interior angle of a {self.shape} is {self.interior_angle}"  if __name__ == "__main__":  poly = Polygon(3)  print(poly)