无需了解公式的正确性,就可以根据输入轻松地测试if语句。在
对于side1 = 3、side2 = 5和{},您可以看到:side1 > side2 and side1 > side3为false
side2 > side1 and side2 > side3为false
side3 > side1 and side3 > side2为真
side3 >= side1+side2为false
如预期;三角形输入有效。然后是:side1 != side2 and side1 != side3为真side1**2 + side2**2 > side3**2为false,因为{}为false。在然后就完成了这个分支;嵌套在if测试下面的任何东西都将被忽略。在side1 == side2 or side1 == side3为假
side2 == side1 or side2 == side3为假
side1 == side2 and side1 == side3为假
因此,从来没有印刷过任何东西。在
因此,我认为您的缩进是错误的;您排除了这里的测试:if (side1 != side2 and side1 != side3): ##scalene triangle check
if (side1**2 + side2**2 > side3**2):
print ("It is a Acute Scalene triangle.")
if (side1**2 + side2**2 == side3**2):
print ("It is a Right Scalene triangle.")
if (side1**2 + side2**2 < side3**2):
print ("It is a Obtuse Scalene trianle.")
通过在side1**2 + side2**2 > side3**2测试下缩进它们。未发现:
^{pr2}$
我删除了测试中多余的括号,并为您修复了一个错误。现在最后一个测试将实际运行并打印It is a Obtuse Scalene triangle.
这同样适用于其他两个等腰三角形测试:if side1 == side2 or side1 == side3: # isosceles triangle check 1
if side1**2 + side2**2 > side3**2:
print("It is a Acute Isosceles triangle.")
if side1**2 + side2**2 == side3**2:
print("It is a Right Isosceles triangle.")
if side1**2 + side2**2 < side3**2:
print("It is a Obtuse Isosceles triangle.")
if side2 == side1 or side2 == side3: # isosceles triangle check 2
if side1**2 + side2**2 > side3**2:
print("It is a Acute Isosceles triangle.")
if side1**2 + side2**2 == side3**2:
print("It is a Right Isosceles triangle.")
if side1**2 + side2**2 < side3**2:
print ("It is a Obtuse Isosceles triangle.")
但是,您可能希望了解如何减少重复;首先测试等边的,然后确定else分支中的三角形类型:if side1 == side2 == side3: # equilateral triangle check
print("It is a Equilateral triangle.")
else:
if side1 != side2 != side3: # scalene triangle
type_ = 'Scalene'
else: # isosceles
type_ = 'Isosceles'
if side1**2 + side2**2 > side3**2:
print("It is a Acute {} triangle.".format(type_))
elif side1**2 + side2**2 < side3**2:
print("It is a Obtuse {} triangle.".format(type_))
else:
print("It is a Right {} triangle.".format(type_))
这涵盖了所有的等边,不等边和等腰三角形测试在一个地方,避免重复测试和每个测试的消息。在