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
消息。任何人都可以发现我的错误吗?
答案 0 :(得分:2)
raw_input
返回一个字符串,您应该先将它们转换为整数。否则条件:
if x>0 and y>0 and z>0:
始终为True。
所有字符串都大于整数。
>>> "-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
答案 1 :(得分: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_input
转换为int
,因为raw_input
会返回string
。