TypeError:<<:'int'和'float'的不受支持的操作数类型

问题描述:

有这个开源代码我正在尝试使用跳棋,代码工作得很好,直到取得一个棋子部分,以及以下错误出现:TypeError:<<:'int'和'float'的不受支持的操作数类型

line 73, in make_move 
    taken_piece = int(1 << sum(i for (i, b) in enumerate(bin(move)[::-1]) if b == '1')/2) 
TypeError: unsupported operand type(s) for <<: 'int' and 'float' 

有关如何解决此问题的任何帮助?

+0

正确地格式化你的代码,然后我们就可以帮你 – dannyxn

+2

python 3:使用'// 2'或者你得到一个浮点数。 –

+1

显然,这个软件是为Python 2编写的,而您正在尝试使用Python 3来运行它。这可能只是一个时间问题,直到您遇到其他问题。 – phant0m

您不能通过浮点数/小数位来移位,错误非常明显。 sum(...)/2在当前操作中给出了一个浮点数。

但是,您可以执行的操作是在Python 3中使用//执行整数除法。对于Python 2,/除了重写默认行为外,还会执行整数除法(对于int操作数)。

+0

在Python 2中,它已经是int了,因为两个操作数都是整数。如果在Python中执行'2.5/2','/'不会进行整数除法。 – phant0m

+0

我已经说过在答案 –

+0

你听起来像'/'总是做一个整数除法。 (让我们忽略这是否可以被覆盖)。我的观点是,操作取决于参数,因为它们*都碰巧是整数,它是一个整数除法,* not *因为使用了'/'。 – phant0m