【问题标题】:Updating mouseX and mouseY variables更新 mouseX 和 mouseY 变量
【发布时间】:2017-08-28 13:15:46
【问题描述】:

在对分配 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不太熟悉,因为我从来没有真正学会过它,我一直在寻找方法但找不到。请帮忙。谢谢

【问题讨论】:

  • 在 Python 2.x 中,4/500 等于零 - 因为它是作为整数运算执行的。将至少一个操作数转换为浮点数以获得浮点除法 - 也许是4 / 500.0
  • 在表达式中使用float类型:例如float(4)/500

标签: python-2.7 processing


【解决方案1】:

我对 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”以获得大量结果。

【讨论】:

    猜你喜欢
    • 2019-02-24
    • 2023-02-08
    • 2012-10-15
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2013-06-27
    • 2015-07-06
    • 2015-02-16
    相关资源
    最近更新 更多