TypeError: integer argument expected got float' Python 3.4

TypeError: integer argument expected got float' Python 3.4

我得到一个整数错误,应该是一个浮点数,所以我改变了它,然后得到相反的结果,说一个浮点数不能是一个整数。我之前遇到过类似的问题,只是将其更改为具有 int.

我正在通过 python27 中的教程进行学习,但大部分时间都是通过故障排除让他们在 python34 中工作。这个我卡住了。

TypeError:整数参数应为浮点数'

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

然后我做了下面的更改,它通常会像这个下面的那样工作,但在这种情况下会出错

TypeError: 'float' 对象不能解释为整数

   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 或搜索以找到答案。

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

如果您使用的是 Python 2 个教程,他们不必处理这些问题

Python 3

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

所以我会去寻找计算 half 的位置,然后用 half = int(...) 强制转换为 int 或使用 //

在 pygame 中,使用 float 表示像素尺寸不是很有用,所以只需将所有内容保留在 int 中,尤其是当您像 half 那样进行除法时,如果两个操作数都是 int,则 tile.x + half 等其他算术将产生 int,因此无需强制转换