Python:检查提供的三条边是否能够形成三角形或n时出错

2024-10-01 15:46:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道给定的三条边是否能形成三角形,要检查的条件是提供的较大值(三条边中的一条)是否小于或等于其他两个剩余值的和,它就能形成三角形。

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

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条件来检查代码,即使没有得到正确的答案,从逻辑上讲,方法是正确的-确定的,但在编码时会犯一些错误。。。你能帮助我吗???


Tags: orl1inputraw条件sideintprint
1条回答
网友
1楼 · 发布于 2024-10-01 15:46:35

您正在将输入就地转换为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)

相关问题 更多 >

    热门问题