2016-09-29 34 views
-1
from math import sqrt 
a = raw_input("First length: ") 
b = raw_input("Second length: ") 
c = raw_input("Third length: ") 
if a >0 and b >0 and c >0 and a + b > c and a + c > b and b + c > a : 
    if a == b == c: 
     print "Equilateral triangle." 
    elif a == b and a != c and b != c: 
     print "Isosceles triangle." 
    elif (a==sqrt(b*b+c*c) or b==sqrt(a*a+c*c) or c==sqrt(a*a+b*b)): 
     print "Right triangle." 
    else: 
     print "Simple triangle." 
else: 
    print "The shape is not a triangle." 

当我插入“2”,“2”和“2”时,一切正常,但是当我输入“3”,“4”和“5”我得到: “形状不是三角形。” 。你能帮我找到问题吗? (我现在看到了,我能找到的另一篇文章的解决方案,但我......不知道这个问题)无法验证一个形状是否为三角形

+0

首先,你搞砸了毕达哥拉斯定理:) –

+2

'raw_input'返回一个字符串,而不是数字。你需要'int(raw_input(“First length:”))'或'float(raw_input(“First length:”))''。它适用于相同的输入,因为您正在比较相同的字符串。一旦这些数字的字符串表示发生变化,那么'elif'子句都不为真 – roganjosh

+0

'b!= c'检查是多余的;如果前两次比较是真的,则保证是真的。 – chepner

回答

0

在Python 2.7

raw_input返回str值。要么使用input() OR类型转换raw_input()int为:

int(raw_input("First length: ")) 

在Python 3

只有input()执行相同的操作的Python 2.x中的raw_input()raw_input不存在Python 3

注意:根据Python 2.7 Document

input('Something Something ...')相当于eval(raw_input('Something Something ...'))

由于安全原因,我们不应该在代码中使用eval。阅读:Is using eval in Python a bad practice?

+1

不建议'输入'。 Python 3摆脱了它的原因。 – chepner

+0

但用户提到标签为'python 2.7' –

+0

@MoinuddinQuadri为true,并且存在'input'。但是,它在Python 2.7中的输入上调用'eval()','eval'不安全。 – roganjosh