Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python会自行更改浮点中的整数_Python_Floating Point_Integer - Fatal编程技术网

Python会自行更改浮点中的整数

Python会自行更改浮点中的整数,python,floating-point,integer,Python,Floating Point,Integer,我正在努力学习Python,我写了一个蛇游戏来学习2.5.4,但是我被卡住了。 至少从我的角度来看,有些整数会变成浮点数,并一直随机变化: 问题是Snake.spawnPoint被Cam.move更改 在那之后,他们只是四处游荡 这就是方法:它与繁殖点无关 产卵点是一个常量,当蛇产卵时,我将它附加到蛇的身体上。我喜欢它是一个列表,因为它的蛇身是由列表组成的,而呈现方法使用索引来做一些事情 代码似乎不适合这里,所以我把它压缩了。 有人能看一下吗?谢谢 如果将整数组合在表达式中,即乘法、加法、减法不

我正在努力学习Python,我写了一个蛇游戏来学习2.5.4,但是我被卡住了。 至少从我的角度来看,有些整数会变成浮点数,并一直随机变化:

问题是Snake.spawnPoint被Cam.move更改

在那之后,他们只是四处游荡

这就是方法:它与繁殖点无关

产卵点是一个常量,当蛇产卵时,我将它附加到蛇的身体上。我喜欢它是一个列表,因为它的蛇身是由列表组成的,而呈现方法使用索引来做一些事情

代码似乎不适合这里,所以我把它压缩了。 有人能看一下吗?谢谢

如果将整数组合在表达式中,即乘法、加法、减法不一定是除法,则整数将变为浮点。最有可能的是,您的一些变量是浮动的,例如自摩擦

浮点数本身不会变回整数,只能通过int。如果你观察到其他任何东西,你就会发现它是错误的

您的移动方法似乎间接修改了spanwPoint。我不知道这是否是预期的行为,但它可能意味着你有两个参考指向同一个列表。例如

self.spawnPoint = [1, 0]
self.vel = self.spawnPoint # Does not make a copy!
self.vel[0] += 0.1
self.vel[1] += 0.2

将导致self.spawnPoint也为[1.1,0.2]

如果在表达式中组合它们,则整数将变为浮点数,即乘法、加法、减法不一定是除法。最有可能的是,您的一些变量是浮动的,例如自摩擦

浮点数本身不会变回整数,只能通过int。如果你观察到其他任何东西,你就会发现它是错误的

您的移动方法似乎间接修改了spanwPoint。我不知道这是否是预期的行为,但它可能意味着你有两个参考指向同一个列表。例如

self.spawnPoint = [1, 0]
self.vel = self.spawnPoint # Does not make a copy!
self.vel[0] += 0.1
self.vel[1] += 0.2

将导致self.spawnPoint在Python中也是[1.1,0.2]

,就像在许多其他语言中一样,任何简单的算术运算,例如+,-,/,*都涉及整数和浮点,其计算结果为浮点答案。整数永远不会变为浮点数,它是作为浮点数返回的操作的结果


请注意,只涉及整数的操作的结果将作为整数返回。在Python中,我使用integer一词来表示int和long

在Python中,就像在许多其他语言中一样,任何涉及整数和浮点的简单算术运算(例如+、-、/、*运算)的结果都是浮点。整数永远不会变为浮点数,它是作为浮点数返回的操作的结果


请注意,只涉及整数的操作的结果将作为整数返回。在Python中,我使用integer一词来表示int和long

请尝试将代码简化为显示问题的最小示例这也可能有助于您自己发现问题。好吧,我不能简化它,因为我不知道出了什么问题,但我知道“Snake.spawenpoint”被“Cam.move”更改,我忘了在报告中提到这一点description@andrew:当integer变为float时,您可以在其周围放置两条print语句,以查看是否确实发生了这种情况。你们有除法吗?请阅读pep8并使用正确的格式和缩进,这段代码伤了我的眼睛。好吧。。我是否必须更改代码才能使相机平稳移动?我的速度变化很小,请尝试将代码减少到一个最小的示例,以显示您的问题这也可能有助于您自己发现问题。好吧,我不能减少它,因为我不知道出了什么问题,但我知道“Snake.spawnPoint”被“Cam.move”更改,我忘了在报告中提到这一点description@andrew:当integer变为float时,您可以在其周围放置两条print语句,以查看是否确实发生了这种情况。你们有除法吗?请阅读pep8并使用正确的格式和缩进,这段代码伤了我的眼睛。好吧。。我是否必须更改代码才能使相机平稳移动?我的速度变化很小。。我有很多移动方法:D,你指的是哪一种?看起来像照相机。斯内普会是罪魁祸首。谢谢!我已经坚持了好几天了,现在我可以继续玩下去了:,/那么使用spawnPoint[:]进行复制可以吗?嗯。。我有很多移动方法:D,你指的是哪一种?看起来像照相机。斯内普会是罪魁祸首。谢谢!我已经坚持了好几天了,现在我可以继续玩下去了:,/所以如果需要,可以使用spawnPoint[:]进行复制吗?
self.spawnPoint = [1, 0]
self.vel = self.spawnPoint # Does not make a copy!
self.vel[0] += 0.1
self.vel[1] += 0.2