0

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

所以我写了一个条件,比如如果三个值中的较大者大于其他两个剩余的较小值,那么它不会形成三角形,否则它会形成三角形并且我在下面编写的代码会引发错误......

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 条件检查了代码,即使那样我也没有得到正确的答案,逻辑上该方法是正确的当然可以,但是在编码时犯了一些错误……你能帮我吗???

4

1 回答 1

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)
于 2013-04-04T11:01:19.507 回答