2012-03-04 129 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"