Python 3.4中没有print语句 print(“查找三角形的类型”) 打印() 打印(“注:C面应为最长面”) 打印() side1=浮动(输入(“输入A边的长度:”) 打印() side2=浮动(输入(“输入B侧的长度:”) 打印() side3=浮动(输入(“输入C侧的长度:”) 打印() 如果(side1>side2和side1>side3):##验证A侧的三角形检查 如果(侧1>=侧2+侧3): 打印(“无效输入,不是三角形。\n a边必须小于B边+C边之和”) 打印() 如果(侧2>侧1和侧2>侧3):##验证B侧的三角形检查 如果(侧2>=侧1+侧3): 打印(“无效输入,不是三角形。\n边B必须小于边a+边C的总和”) 打印() 如果(侧3>侧1和侧3>侧2):##验证C侧的三角形检查 如果(侧3>=侧1+侧2): 打印(“无效输入,不是三角形。\n边C必须小于边a+边B的总和”) 打印() 如果(side1!=side2和side1!=side3):##不等边三角形检查 如果(侧1**2+侧2**2>侧3**2): 打印(“这是一个锐角不等边三角形”) 如果(侧1**2+侧2**2==侧3**2): 打印(“它是一个直角不等边三角形。”) 如果(第1**2侧+第2**2侧侧3**2): 打印(“它是一个锐角等腰三角形。”) 如果(侧1**2+侧2**2==侧3**2): 打印(“它是一个直角等腰三角形。”) 如果(第1**2侧+第2**2侧侧3**2): 打印(“它是一个锐角等腰三角形。”) 如果(侧1**2+侧2**2==侧3**2): 打印(“它是一个直角等腰三角形。”) 如果(第1**2侧+第2**2侧side2和side1>side3为false side2>side1和side2>side3为false side3>side1和side3>side2为真 side3>=side1+side2为false

Python 3.4中没有print语句 print(“查找三角形的类型”) 打印() 打印(“注:C面应为最长面”) 打印() side1=浮动(输入(“输入A边的长度:”) 打印() side2=浮动(输入(“输入B侧的长度:”) 打印() side3=浮动(输入(“输入C侧的长度:”) 打印() 如果(side1>side2和side1>side3):##验证A侧的三角形检查 如果(侧1>=侧2+侧3): 打印(“无效输入,不是三角形。\n a边必须小于B边+C边之和”) 打印() 如果(侧2>侧1和侧2>侧3):##验证B侧的三角形检查 如果(侧2>=侧1+侧3): 打印(“无效输入,不是三角形。\n边B必须小于边a+边C的总和”) 打印() 如果(侧3>侧1和侧3>侧2):##验证C侧的三角形检查 如果(侧3>=侧1+侧2): 打印(“无效输入,不是三角形。\n边C必须小于边a+边B的总和”) 打印() 如果(side1!=side2和side1!=side3):##不等边三角形检查 如果(侧1**2+侧2**2>侧3**2): 打印(“这是一个锐角不等边三角形”) 如果(侧1**2+侧2**2==侧3**2): 打印(“它是一个直角不等边三角形。”) 如果(第1**2侧+第2**2侧侧3**2): 打印(“它是一个锐角等腰三角形。”) 如果(侧1**2+侧2**2==侧3**2): 打印(“它是一个直角等腰三角形。”) 如果(第1**2侧+第2**2侧侧3**2): 打印(“它是一个锐角等腰三角形。”) 如果(侧1**2+侧2**2==侧3**2): 打印(“它是一个直角等腰三角形。”) 如果(第1**2侧+第2**2侧side2和side1>side3为false side2>side1和side2>side3为false side3>side1和side3>side2为真 side3>=side1+side2为false,python,python-3.4,Python,Python 3.4,这是一个简单的程序,应该从用户输入的三条边上计算角度,然后确定三角形的类型,然后将相应的语句打印回用户。但是,如果用户输入3,5,7或5,7,9,则没有任何打印语句。但是这些公式都是正确的。不必讨论公式的正确性,您可以轻松地根据输入测试每个if语句 对于side1=3、side2=5和sid3=7,您可以看到: side1>side2和side1>side3为false side2>side1和side2>side3为false side3>side1和side3>side2为真 side3

这是一个简单的程序,应该从用户输入的三条边上计算角度,然后确定三角形的类型,然后将相应的语句打印回用户。但是,如果用户输入3,5,7或5,7,9,则没有任何打印语句。但是这些公式都是正确的。

不必讨论公式的正确性,您可以轻松地根据输入测试每个
if
语句

对于
side1=3
side2=5
sid3=7
,您可以看到:

  • side1>side2和side1>side3
    为false
  • side2>side1和side2>side3
    为false
  • side3>side1和side3>side2
    为真
    • side3>=side1+side2
      为false
如期而至;三角形输入有效。然后是:

  • side1!=边2和边1!=第3条
    是正确的

    • side1**2+side2**2>side3**2
      为假,因为
      9+25>49
      为假

      • 然后完成该分支;嵌套在
        if
        测试下面的任何内容都将被忽略
  • side1==side2或side1==side3
    为false
  • side2==side1或side2==side3
    为false
  • side1==side2和side1==side3
    为false
因此,从来没有印刷过任何东西

因此,我认为你的压痕错了;您在此处排除测试:

print("Finding the type of triangle.")
print()
print("Note: Side C should be the longest side")
print()
side1 = float(input("Enter the length of side A: "))
print()
side2 = float(input("Enter the length of side B: "))
print()
side3 = float(input("Enter the length of side C: "))
print()

if (side1 > side2 and side1 > side3): ##validating triangle check for side A
    if (side1 >= side2+side3):
        print ("Invalid input, not a triangle. \nSide A must be smaller then the sum of Side B + Side C.")
    print()
if (side2 > side1 and side2 > side3): ##validating triangle check for side B
    if (side2 >= side1+side3):
        print ("Invalid input, not a triangle. \nSide B must be smaller then the sum of Side A + Side C.")
    print()
if (side3 > side1 and side3 > side2): ##validating triangle check for side C
    if (side3 >= side1+side2):
        print ("Invalid input, not a triangle. \nSide C must be smaller then the sum of Side A + Side B.")
    print()

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.")

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 trianle.")

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 trianle.")

if (side1 == side2 and side1 == side3): ##equilateral triangle check
    print ("It is a Equilateral triangle.")
我删除了测试中多余的括号,并为您修复了一个拼写错误。现在,最后一个测试将实际运行并打印
它是一个钝角不等边三角形。

这同样适用于其他两个等腰三角形测试:

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 triangle.")

这包括在一个位置进行的所有等边三角形、不等边三角形和等腰三角形测试,避免重复每个测试和消息。

您的缩进不正确,例如,对于
3、4、5
您的不等边三角形检查未通过第一次测试,其他所有测试均未进行评估,因为它们缩进:

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_))
if(side1!=side2和side1!=side3):##不等边三角形检查
如果(侧1**2+侧2**2>侧3**2):
打印(“这是一个锐角不等边三角形”)
如果(侧1**2+侧2**2==侧3**2):
打印(“它是一个直角不等边三角形。”)
如果(第1**2侧+第2**2侧<第3**2侧):
打印(“这是一个钝的不等边三角形。”)

其他测试也有类似的问题。

您的问题是嵌套的if语句。现在,只有在右不等角和钝不等角已经很严重的情况下,才检查右不等角和钝不等角。这似乎解决了这个问题:

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.")
if(side1!=side2和side1!=side3):##不等边三角形检查
如果(侧1**2+侧2**2>侧3**2):
打印(“这是一个锐角不等边三角形”)
elif(边1**2+边2**2==边3**2):
打印(“它是一个直角不等边三角形。”)
elif(第1**2方+第2**2方<第3**2方):
打印(“这是一个钝的不等边三角形。”)

请注意,如果您只想触发一条if语句,通常使用elif是更好的做法。

您是否逐条查看了所有的
if
语句?对于这两种组合,您确实永远不会得到
print()
语句(除了空的
print()
s)。很明显你还有问题!在没有详细阅读代码的情况下,我怀疑阅读在这里是有价值的。TL;DR-不要使用==来比较浮点数。
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_))
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.")
if (side1 != side2 and side1 != side3): ##scalene triangle check
    if (side1**2 + side2**2 > side3**2):
         print ("It is a Acute Scalene triangle.")
    elif (side1**2 + side2**2 == side3**2):
        print ("It is a Right Scalene triangle.")
    elif (side1**2 + side2**2 < side3**2):
        print ("It is a Obtuse Scalene trianle.")