Python:检查提供的三个边可能会形成三角形时出错

时间:2013-04-04 10:58:41

标签: python if-statement

我想找出给定的三边是否可以形成一个三角形,检查的条件是所提供的较大值(三分之一)是否小于或等于另外两个剩余值的总和,它可以形成一个三角形。

所以我写了一个条件,如果三个值中的较大值大于另外两个剩下的较小值那么它不会形成三角形,否则它会形成一个三角形,我在下面写的代码会抛出错误...

Def triangle_check(l1,l2,l3):
    if (l1>l2+l3) or (l2>L1+l3) or (l3>l1+l2):
        print 'No, the lengths wont form a triangle'
    elif (l1==l2+l3) or (l2==L1+l3) or (l3==l1+l2):
        print 'yes, it can form a degenerated triangle'
    else:
        print 'Yes, a triangle can be formed out of it'

length1 = raw_input('enter side 1\n')
int(length1)
length2 = raw_input('enter side 2\n')
int(length2)
length3 = raw_input('enter side 3\n')
int(length3)

triangle_check(length1,length2,length3)

但最糟糕的是当我给出不同的值作为输入时,得到的答案是不正确的* 强文 *我甚至通过删除elif条件来检查代码,即使这样也没有得到正确的答案,从逻辑上讲,这种方法是正确的,但是在编码的时候犯了一些错误......你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您正在将输入就地转换为int,然后将其丢弃。您应该将这些行更改为:

length1 = int(raw_input('enter side 1\n'))
length2 = int(raw_input('enter side 2\n'))
length3 = int(raw_input('enter side 3\n'))

您的代码中还有一些其他语法错误。更正如下:

def triangle_check(l1,l2,l3):
    if (l1>l2+l3) or (l2>l1+l3) or (l3>l1+l2):
        print 'No, the lengths wont form a triangle'
    elif (l1==l2+l3) or (l2==l1+l3) or (l3==l1+l2):
        print 'yes, it can form a degenerated triangle'
    else:
        print 'Yes, a triangle can be formed out of it'

length1 = int(raw_input('enter side 1\n'))
length2 = int(raw_input('enter side 2\n'))
length3 = int(raw_input('enter side 3\n'))

triangle_check(length1,length2,length3)

然而,这种编程方式令人困惑,我为您编写了一个更简单的算法:

def check_valid_triangle(sides):
    for side in sides:
        other_sides = (sum(sides)-side)
        if side > other_sides:
            return 'No'
        elif side == other_sides:
            return 'Degenerated'
    else:
        return 'Yes'

sides = []
for i in range(3):
    sides.append(int(raw_input('Enter a side:\n')))

print check_valid_triangle(sides)