使用If语句的三角剖分器(Python)

使用If语句的三角剖分器(Python),python,if-statement,Python,If Statement,我在我的代码工作,使这个程序的指示 请用户输入三个数字,它们是潜在三角形的边 如果边不能是三角形的有效边,请告诉用户“你真丢脸,那不是三角形!”,否则说它有效 如果三条边都相等,告诉用户“这是一个等边三角形” 如果两条边相等,告诉用户“这是一个等腰三角形” 提示:要成为三角形,两条最短边的总和必须大于最长边。如果边是A、B和C,则A+B+C必须大于最长边的两倍 这是我到目前为止所做的,我认为它应该运行得很好,但当我尝试运行它时,我遇到了一个错误。我能做些什么让它顺利运行?谢谢你抽出时间 imp

我在我的代码工作,使这个程序的指示

请用户输入三个数字,它们是潜在三角形的边

如果边不能是三角形的有效边,请告诉用户“你真丢脸,那不是三角形!”,否则说它有效

如果三条边都相等,告诉用户“这是一个等边三角形”

如果两条边相等,告诉用户“这是一个等腰三角形”

提示:要成为三角形,两条最短边的总和必须大于最长边。如果边是A、B和C,则A+B+C必须大于最长边的两倍

这是我到目前为止所做的,我认为它应该运行得很好,但当我尝试运行它时,我遇到了一个错误。我能做些什么让它顺利运行?谢谢你抽出时间

 import math
a = input("Please Enter Side  A ")
b = input("Please Enter Side  B")
c = input("Please Enter Side  C ")
d = a+b+c
if d < (2*c)
     print"Shame on you, that is not a triangle!"
elif d > (2*c):
     print"You Have Two Possible Answers: "
else:
     xone = a=b=c
     xtwo = a=b
print "It's Equilateral:",xone," 
print "It's Isosceles:",xtwo," 
导入数学
a=输入(“请输入a侧”)
b=输入(“请输入b侧”)
c=输入(“请输入c侧”)
d=a+b+c
如果d<(2*c)
打印“你真丢脸,那不是三角形!”
elif d>(2*c):
打印“您有两个可能的答案:”
其他:
xone=a=b=c
xtwo=a=b
打印“它是等边的:”,xone,“
打印“它是等腰的:,xtwo,”

您的程序可能不会产生您预期的结果,但这一行:

如果d<(2*c)
缺少冒号,如:

if d < (2*c):
如果d<(2*c):

您的程序可能不会产生您预期的结果,但这一行:

如果d<(2*c)
缺少冒号,如:

if d < (2*c):
如果d<(2*c):

我注意到几个问题:

  • 您的
    if
    语句缺少冒号。
    这是我第一次运行时收到的错误消息:

    if d < (2*c)
                ↑
    line 6, column 13    in tringle.py
    
    这行有三组双引号。前两个字符将字符串括起来,它是等边的,第三个字符开始一个从不闭合的字符串。因此,我们去掉了双引号(并对第二个print语句执行相同的操作):

  • xone
    并不总是被分配。
    。程序现在运行成功,但当我输入三个长度26、13和4时,我得到另一个错误:

    Traceback (most recent call last):
      File "/Users/alexwlchan/tmp/tringle.py", line 13, in <module>
        print "It's Equilateral:", xone
    NameError: name 'xone' is not defined
    
    回溯(最近一次呼叫最后一次):
    文件“/Users/alexwlchan/tmp/tringle.py”,第13行,在
    打印“它是等边的:”,xone
    NameError:未定义名称“xone”
    
    问题是,
    xone
    只在
    if
    语句的一个分支中定义,但它会作为等边三角形打印的一部分被调用,不管后面哪个分支。您需要重新排列打印语句以解决此问题

  • 您对三角形的检查实际上不起作用。以下是您的提示(我的强调):

    要成为三角形,两条最短的边的总和必须大于最长的

    考虑我上面的例子:26、13和4。它运行时从未警告过我它不是三角形,但显然这样的三角形是不可能的。你武断地认为
    c
    是最长的边,但为什么呢?没有理由相信那是真的


    • 我注意到几个问题:

      • 您的
        if
        语句缺少冒号。
        这是我第一次运行时收到的错误消息:

        if d < (2*c)
                    ↑
        line 6, column 13    in tringle.py
        
        这行有三组双引号。前两个字符将字符串括起来,它是等边的,第三个字符开始一个从不闭合的字符串。因此,我们去掉了双引号(并对第二个print语句执行相同的操作):

      • xone
        并不总是被分配。
        。程序现在运行成功,但当我输入三个长度26、13和4时,我得到另一个错误:

        Traceback (most recent call last):
          File "/Users/alexwlchan/tmp/tringle.py", line 13, in <module>
            print "It's Equilateral:", xone
        NameError: name 'xone' is not defined
        
        回溯(最近一次呼叫最后一次):
        文件“/Users/alexwlchan/tmp/tringle.py”,第13行,在
        打印“它是等边的:”,xone
        NameError:未定义名称“xone”
        
        问题是,
        xone
        只在
        if
        语句的一个分支中定义,但它会作为等边三角形打印的一部分被调用,不管后面哪个分支。您需要重新排列打印语句以解决此问题

      • 您对三角形的检查实际上不起作用。以下是您的提示(我的强调):

        要成为三角形,两条最短的边的总和必须大于最长的

        考虑我上面的例子:26、13和4。它运行时从未警告过我它不是三角形,但显然这样的三角形是不可能的。你武断地认为
        c
        是最长的边,但为什么呢?没有理由相信那是真的


        • 试试这个。我希望这会对你有好处

          a = input("Please Enter Side  A ")
          b = input("Please Enter Side  B")
          c = input("Please Enter Side  C ")
          d = a+b+c
          if d < (2*c) or d<(2*a) or d<(2*b):
               print"Shame on you, that is not a triangle!"
          else:
              print "You have two possible answers"
              if(a==b==c):
                  print "It's Equilateral: "
              elif(a==b)or(b==c)or(a==c):
                  print "It's Isosceles: "
          
          a=输入(“请输入a侧”)
          b=输入(“请输入b侧”)
          c=输入(“请输入c侧”)
          d=a+b+c
          
          如果d<2*c)或d请尝试此操作。我希望这会对你有好处

          a = input("Please Enter Side  A ")
          b = input("Please Enter Side  B")
          c = input("Please Enter Side  C ")
          d = a+b+c
          if d < (2*c) or d<(2*a) or d<(2*b):
               print"Shame on you, that is not a triangle!"
          else:
              print "You have two possible answers"
              if(a==b==c):
                  print "It's Equilateral: "
              elif(a==b)or(b==c)or(a==c):
                  print "It's Isosceles: "
          
          a=输入(“请输入a侧”)
          b=输入(“请输入b侧”)
          c=输入(“请输入c侧”)
          d=a+b+c
          
          如果d<(2*c)或d,我认为您也应该检查代码中三角形每边的有效性。所以类似这样的东西可能适合你:

          a = input("Please Enter Side  A ")
          b = input("Please Enter Side  B")
          c = input("Please Enter Side  C ")
          
          d = a + b + c
          
          if (d < (2*a)) or (d < (2*b)) or (d < (2*c)): # Make sure that each side is valid
              print "Shame on you, that is not a triangle!"
          
          elif (a==b==c):
              print "It's Equilateral"
          
          elif (a==b) or (a==c) or (b==c):
              print "It's Isosceles"
          
          a=输入(“请输入a侧”)
          b=输入(“请输入b侧”)
          c=输入(“请输入c侧”)
          d=a+b+c
          如果(d<2*a)或(d<2*b)或(d<2*c)):#确保每一方都有效
          打印“你真丢脸,那不是三角形!”
          elif(a==b==c):
          打印“它是等边的”
          elif(a==b)或(a==c)或(b==c):
          打印“它是等腰的”
          
          我认为您还应该检查代码中三角形每一侧的有效性。所以类似这样的东西可能适合你:

          a = input("Please Enter Side  A ")
          b = input("Please Enter Side  B")
          c = input("Please Enter Side  C ")
          
          d = a + b + c
          
          if (d < (2*a)) or (d < (2*b)) or (d < (2*c)): # Make sure that each side is valid
              print "Shame on you, that is not a triangle!"
          
          elif (a==b==c):
              print "It's Equilateral"
          
          elif (a==b) or (a==c) or (b==c):
              print "It's Isosceles"
          
          a=输入(“请输入a侧”)
          b=输入(“请输入b侧”)
          c=输入(“请输入c侧”)
          d=a+b+c
          如果(d<2*a)或(d<2*b)或(d<2*c)):
          
          c = input("Please Enter Side  C ")
          d = a+b+c
          
          if d < (2*c)
          
               print"Shame on you, that is not a triangle!"
          elif d > (2*c):
               print"You Have Two Possible Answers: "
          
          else:
          
               xone = a=b=c
          
               xtwo = a=b
          
          print "It's Equilateral:",xone," 
          
          print "It's Isosceles:",xtwo,"