0
a = raw_input('side 1 \n')
b = raw_input('side 2 \n')
c = raw_input('side 3 \n')

def triangle_check(x, y, z):
    if x > 0 and y > 0 and z > 0:
        if z > (x + y) or y > (x + z) or x > (y + z):
            print 'impossible'
        else:
            print 'possible'

triangle_check(a, b, c)

我收到语义错误(我认为)。即使我输入了一个有效的三元组,例如3, 4, 5,我也会收到impossible消息。有人能看出我的错误吗?

4

2 回答 2

2

raw_input返回一个字符串,您应该先将它们转换为整数。否则条件:

if x>0 and y>0 and z>0:始终为真。

所有字符串都大于整数。

>>> "-1" > 0
True
>>> "" > 0
True

z>(x+y): 这里实际上是先连接两个字符串,然后将其与其他字符串 z 进行比较。

修复:应用int()将这些字符串转换为整数:

a = int(raw_input('side 1 \n'))
b = int(raw_input('side 2 \n'))
c = int(raw_input('side 3 \n'))

现在它工作正常。

演示:

$ python so.py
side 1 
3
side 2 
4
side 3 
5
possible
于 2013-06-28T09:31:37.717 回答
0
a = raw_input('side 1 \n')
b = raw_input('side 2 \n')
c = raw_input('side 3 \n')

def triangle_check(x, y, z):
    if x > 0 and y > 0 and z > 0:
        if z > (x + y) or y > (x + z) or x > (y + z):
            print 'impossible'
        else:
            print 'possible'

triangle_check(int(a), int(b), int(c))

需要转换raw_inputintasraw_input返回一个string.

于 2013-06-28T09:33:25.227 回答