2012-03-04 133 views
-4

我在「Think Python」中遇到過一個練習,我不知道該怎麼做。Python練習

練習:1. 編寫一個名爲is_triangle的函數,它將三個整數作爲參數,並打印「是」或「否」,具體取決於是否可以用給定長度的棒形成三角形。

當然還有:「如果三個長度中的任何一個大於另外兩個的總和,那麼就不能形成三角形。否則,你CAN3「的方式來做到這一點

+4

,什麼是你的問題? – Manish 2012-03-04 08:05:33

+0

顯然如何解決它。 – user1180169 2012-03-04 08:14:59

+0

我只想到做一個函數,添加3個整數中的2個,並檢查它們是否大於第三個。這與每個數字1個elif語句。 – user1180169 2012-03-04 08:20:00

回答

1

魚米之鄉,這裏是一個:

def is_triangle(a, b, c): 
    if (a > b + c) or (b > a + c) or (c > a + b): 
     print "No" 
    else: 
     print "Yes" 
+0

謝謝你,我正在尋找什麼。 解決並可能關閉。 – user1180169 2012-03-04 08:28:29

+0

@ user1180169這是錯的。我的回答是對的。他的回答會給1,3,4作爲有效的一面。 – 2012-03-04 08:31:53

+1

「如果三個長度中的任何一個大於其他兩個的總和,那麼你就不能形成一個三角形。」不要說「大於或等於」,因此該問題的陳述似乎允許共線點作爲三角形。 – Cameron 2012-03-04 08:34:27

1

三角不等式定理指出,一個三角形的任何一方總是比其他兩個的總和短兩側。

在上面的代碼中,它檢查任何一邊是否大於或等於其他邊的總和&打印「不可能」。

代碼:

>>> def is_triangle(sides): 
...  for i,l in enumerate(sides): 
...   if sides[i] > (sides[(i+1)%3] + sides[(i+2)%3]): return False 
...  return True 
... 
>>> is_triangle([3,4,5]) 
True 
>>> 
10
def is_triangle(a, b, c): 
    return a + b + c >= 2 * max(a, b, c) # supposed circumference suffices for largest edge and back. 

編輯:改變>>=是具有確切要求OP貼線。感謝您指出這一點,約翰!還添加了評論。

+0

等待清潔數學+1,但根據OP的要求,我認爲它應該是> = not>。應允許1 2 3。 – 2012-03-04 09:31:42

+1

@JohanLundberg:謝謝,合併了它。 – WolframH 2012-03-04 12:44:26

0

一個三角形的兩條邊的總和必須大於第三邊更大,以進行有效的三角 這裏去驗證碼:看它

def is_triangle(a,b,c):  #take three arguments 
if(a+b>c)and(b+c>a)and(a+c>b):  #check the conditions 
print "Yes" 
else: 
print "No" 
0

一種方法是要注意,如果任何一方大於一半的限制(即棒長度的總和),則它不能形成三角形。因此,測試每個棒比丕林島/ 2變小。該測試適用於不只是3支,但任何數量的枝> 2

-1

試試這個:

def is_triangle(a, b, c): 
    if((a + b > c) && (a + c > b) && (b + c > a)): 
     print "Yes" 
    else: 
     print "No"