我得到一个预期浮点数的整数错误,所以我改变它然后反过来说浮点数不能是一个整数。之前我遇到过类似的问题,只是将其更改为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或搜索找到答案。
答案 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
,所以不需要强制