用户输入的三角边和程序(Think Python练习5-4-2)

时间:2014-06-01 16:49:05

标签: python

我试图解决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

3 个答案:

答案 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 yz投射到整数,因此将输入字符串>进行比较。

更改

 int(x)

 x = int(x)

并对yz执行相同的操作。 这里的问题是您忘记将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")

这是在考虑限于您的锻炼范围。您可以通过使其动态化以将用户输入限制为仅整数(在提示符下)来将其提升到较低的水平。希望一旦您升级为高级用户后就可以这样做。祝你好运!