更新mouseX和mouseY变量

时间:2017-08-28 13:15:46

标签: python-2.7 processing

在对我分配mouseX和mouseY的变量执行操作后,我一直在更新鼠标位置时遇到问题。

def setup():
    size(500,500)

def draw():
    background(255,255,255)
    noStroke()
    fill (0,0,0)
    a1 = mouseX
    b1 = mouseY

    print a1
    a1 = a1*(4/500) - 2 #trans to [-2,2]
    b1 = b1*(4/500) - 2
    print a1

当我打印a1时,我打印的第一个值更新但第二个值不是。因此,如果我将鼠标位置移动到(250,250),我会得到250作为第一个输出,-2作为我的第二个值。我对python并不太熟悉,因为我从来没有真正学过它,而且我正在寻找方法但却找不到它。请帮忙。谢谢

1 个答案:

答案 0 :(得分:0)

我对Python一无所知,但在常规处理(基本上只是Java)中,int值不能保存小数位。如果您尝试在int值中存储小数位,则只需截断小数部分就会截断

以下是一些例子:

int x = 3 / 2; // 1.5 is truncated so x is just 1
int y = 1 / 2; // 0.5 is truncated so y is just 0

现在,让我们将您的代码分成多个步骤。它可能看起来像这样:

int multiplier = 4 / 500;
a1 = a1 * multiplier;
a1 = a1 - 2;

希望您可以看到4 / 500被截断,因此它只是0。然后,当您将其乘以a时,您会获得0。然后您减去2,因此最终结果为-2

您应该养成将代码分成多个步骤的习惯,这样您就可以更轻松地debug代码。

现在,要解决此问题,您需要使用float变量,该变量允许小数位。由于您使用文字(4500都是文字),您可以这样做:

 a1 = a1 * (4.0 / 500.0) - 2

现在此代码使用4.0500.0,因此结果为0.008,其中包含小数部分。然后,剩下的计算将按照您的预期进行。

根据处理类型的工作方式,您也可以执行此操作:

a1 = a1 * 4/500 - 2

如果a1已经是float值,那么这将有效,因为首先计算a1 * 4,结果为float,其余部分应该按照你的期望工作。但只有a1已经是float时,这才有效。

你也应该尝试谷歌搜索" python int division"大量的结果。