#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(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)