2013-04-04 33 views
0

我想找出給定的三邊是否可以形成一個三角形,檢查的條件是如果較大的值(三)提供的是小於或等於另外兩個剩餘值的總和,它可以形成一個三角形。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的條件檢查代碼,即使在當時我沒有得到不同的值正確的答案,在邏輯上這種方法是正確的,但在編碼時會犯一些錯誤......你能幫我嗎?

+1

請糾正代碼: 防守?你的意思是def? L1或l1? 並且你必須重新分配lenght1 = int(length1)來得到int()效果 – HVNSweeting 2013-04-04 11:10:20

回答

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) 
+0

哦你是說默認情況下,我提供的輸入是int,當我輸入它時,它被轉換成一個字符串? – 2013-04-04 11:04:22

+0

但即使執行沒有elif的代碼也爲不同的值拋出錯誤的答案 – 2013-04-04 11:08:37

+0

感謝你的代碼比我堅實得多,它解決了我的問題,但是你能否發現我編碼的方式有什麼問題... – 2013-04-04 11:21:46