TypeError:整数参数预期得到浮动' Python 3.4

时间:2015-07-25 15:34:27

标签: python python-3.x pygame python-2to3

我得到一个预期浮点数的整数错误,所以我改变它然后反过来说浮点数不能是一个整数。之前我遇到过类似的问题,只是将其更改为int。

我正在通过python27中的教程学习,但大部分都是通过故障排除让它们在python34中工作。这个我被困住了。

TypeError:期望的整数参数go float'

for tile in return_tiles:
    pygame.draw.circle(screen, [34, 95, 200],
    [tile.x + half - 2, tile.y + half - 2], 5 )

所以我接着在下面进行了更改,通常会像下一个那样工作,但在这种情况下会出错

TypeError:' float' object不能解释为整数

   for tile in return_tiles:
        pygame.draw.circle(screen, (34, 95, 200), (int(tile.x + half -2),int(half - 2, tile.y + half - 2)), int(5))

如何修复下面的另一个是整数的示例,但在上面的情况下它不起作用

 pygame.draw.circle(screen, (34, 95, 200), (int(tile.x + half -2),int(half - 2, tile.y + half - 2)), int(5))

我一直在通过在线学习教程来教自己,但大部分都是针对python的早期版本2.7等。但这在很大程度上并不是一个问题。我一直在使用错误消息,大多数情况下我可以弄清楚,如果有时我没有运行2to3.py或搜索找到答案。

1 个答案:

答案 0 :(得分:5)

我怀疑你的罪魁祸首是half变量,因为它涉及除法,在Python 2中它会给你一个int,但是在Python 3中除非使用int除法运算符float

,否则除法将给出//

如果你正在使用Python 2教程,那么他们就不必处​​理这个问题

Python 3

>>> 5 // 3
1
>>> 5 / 3
1.6666666666666667

所以我会去寻找计算half的位置,并使用int强制推荐给half = int(...)或使用//

在pygame中,将float用于像素维度并不是非常有用,所以只需将所有内容保存在int中,尤其是当您执行half之类的分割时,其余部分如果两个操作数都是tile.x + half s,那么像int这样的算术会产生int,所以不需要强制