我试图解决Think Python的练习5-4-2,该练习要求编写一个程序,提示用户输入三根棍子的大小,以便计算他们是否可以制作一个三角形。规则是如果三根棍子中的任何一根长度大于另外两根棍子的总和,则不能制作三角形。
这是我的代码。问题是它总是返回“没有三角形”。 (我尝试使用正确的值,例如4,5和3,以及应该返回错误的值,例如1,2和12),它总是指示"无" (好像我没有使用"返回"):
def is_triangle(x,y,z):
if (x>y+z) or (y>z+x) or (z>x+y):
print 'no triangle'
else:
print 'triangle yes'
return
prompt1 = 'Input firt stick length for your triangle please...'
x = raw_input(prompt1)
int(x)
prompt2 = 'Input second stick length for your triangle please...'
y = raw_input(prompt2)
int(y)
prompt3 = 'Input third stick length for your triangle please...'
z = raw_input(prompt3)
int(z)
print is_triangle(x,y,z)
先谢谢你的帮助!... Norpa
答案 0 :(得分:2)
这里的问题是您没有将int cast
重新分配给x,y和z。因此,它们被视为字符串,在您的上一次比较中,您最终得到(x + y) = 34
(作为字符串),并且比较变为True。
因此所有提示部分应如下所示:
prompt1 = 'Input firt stick length for your triangle please...'
x = raw_input(prompt1)
x = int(x)
或者:
prompt1 = 'Input firt stick length for your triangle please...'
x = int(raw_input(prompt1))
答案 1 :(得分:0)
您没有正确地将x
y
和z
投射到整数,因此将输入字符串与>
进行比较。
更改
int(x)
到
x = int(x)
并对y
和z
执行相同的操作。
这里的问题是您忘记将int(x)
的返回值分配给变量x
,因此int(x)
没有任何有意义的效果。
答案 2 :(得分:0)
在构造函数时,可以将其设置为整数。
def is_triangle(a,b,c):
if (int(a)>int(b+c)) or (int(b)>int(c+a)) or (int(c)>int(a+b)):
print("No")
else:
print("Yes")
这是在考虑限于您的锻炼范围。您可以通过使其动态化以将用户输入限制为仅整数(在提示符下)来将其提升到较低的水平。希望一旦您升级为高级用户后就可以这样做。祝你好运!