【问题标题】:How to print in Python using class and print function如何使用类和打印函数在 Python 中打印
【发布时间】:2021-10-29 01:33:20
【问题描述】:
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)x 180,然后取该答案,然后将其除以边数)。例如:六边形。 ( 6 - 2 ) x 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()

【问题讨论】:

  • 您应该在FindInteriorAngle 的末尾加上return interior,然后在Print 中打印that。 print(self.FindInteriorAngle())

标签: python python-3.x class object if-statement


【解决方案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 <= sides <= 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)
    

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多