为什么str [:len(str)/ 2]而不是str [:len(str)* 0.5]?

时间:2017-01-11 22:54:03

标签: python string type-conversion division multiplication

我正在玩蝙蝠编码和

return str[:len(str) / 2]

工作正常,但

return str[:len(str) * 0.5]

返回

Error:slice indices must be integers or None or have an __index__ method

虽然我可以推测为什么这是我对听到更明智的解释非常感兴趣。谢谢!

奖励积分:提供我可以在此帖子上放置的标签,以便我们对其进行分类!

2 个答案:

答案 0 :(得分:2)

在Python 2中:

除以两个整数会得到一个整数。

乘以整数和浮点数会产生浮动。

切片必须是整数。

答案 1 :(得分:0)

在python中,切片必须是整数(5.0是错误的,5是好的。)

在python 2中

len(str) / 5 # => integer
len(str) * 0.5 # => float

在python 3中

len(str) / 5 # => float
len(str) // 5 # => integer (equivalent of math.floor(len(str) / 5))