Python练习
我在“Think Python”中遇到过一个练习,我不知道该怎么做。Python练习
练习:1. 编写一个名为is_triangle的函数,它将三个整数作为参数,并打印“是”或“否”,具体取决于是否可以用给定长度的棒形成三角形。
当然还有:“如果三个长度中的任何一个大于另外两个的总和,那么就不能形成三角形。否则,你CAN3“的方式来做到这一点
鱼米之乡,这里是一个:
def is_triangle(a, b, c):
if (a > b + c) or (b > a + c) or (c > a + b):
print "No"
else:
print "Yes"
谢谢你,我正在寻找什么。 解决并可能关闭。 – user1180169 2012-03-04 08:28:29
@ user1180169这是错的。我的回答是对的。他的回答会给1,3,4作为有效的一面。 – 2012-03-04 08:31:53
“如果三个长度中的任何一个大于其他两个的总和,那么你就不能形成一个三角形。”不要说“大于或等于”,因此该问题的陈述似乎允许共线点作为三角形。 – Cameron 2012-03-04 08:34:27
三角不等式定理指出,一个三角形的任何一方总是比其他两个的总和短两侧。
在上面的代码中,它检查任何一边是否大于或等于其他边的总和&打印“不可能”。
代码:
>>> 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
>>>
def is_triangle(a, b, c):
return a + b + c >= 2 * max(a, b, c) # supposed circumference suffices for largest edge and back.
编辑:改变>
到>=
是具有确切要求OP贴线。感谢您指出这一点,约翰!还添加了评论。
等待清洁数学+1,但根据OP的要求,我认为它应该是> = not>。应允许1 2 3。 – 2012-03-04 09:31:42
@JohanLundberg:谢谢,合并了它。 – WolframH 2012-03-04 12:44:26
一个三角形的两条边的总和必须大于第三边更大,以进行有效的三角 这里去验证码:看它
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"
一种方法是要注意,如果任何一方大于一半的限制(即棒长度的总和),则它不能形成三角形。因此,测试每个棒比丕林岛/ 2变小。该测试适用于不只是3支,但任何数量的枝> 2
试试这个:
def is_triangle(a, b, c):
if((a + b > c) && (a + c > b) && (b + c > a)):
print "Yes"
else:
print "No"
,什么是你的问题? – Manish 2012-03-04 08:05:33
显然如何解决它。 – user1180169 2012-03-04 08:14:59
我只想到做一个函数,添加3个整数中的2个,并检查它们是否大于第三个。这与每个数字1个elif语句。 – user1180169 2012-03-04 08:20:00