0

与えられた 3 辺が三角形を形成できるかどうかを調べたいのですが、確認する条件は、提供された (3 つのうちの) 大きい方の値が他の 2 つの残りの値の合計以下であるかどうかです。三角形。

だから私は、3つの値のうち大きい方が他の2つの小さい方の値よりも大きい場合、それは三角形を形成しません。それ以外の場合は三角形を形成し、以下に記述したコードはエラーをスローします...

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 に答える