2017-08-28 100 views
0

我在对变量赋值mouseX和mouseY的操作后,更新鼠标位置时出现问题。更新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不太熟悉,因为我从来没有真正学过它,我正在寻找方法,但找不到一个。请帮忙。谢谢

+0

在Python 2.x中,'4/500'等于零 - 因为它是作为整数运算执行的。也许将至少一个操作数转换为浮点数以获得浮点除法 - “4/500.0”。 – jasonharper

+0

在表达式中使用float类型:例如,float(4)/ 500 – bilbo

回答

0

我对Python一无所知,但是在正常的Processing(基本上只是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时才有效。

你也应该试着用google搜索“python int division”来获得大量的结果。