Python &引用;类型错误:应为range()整数结束参数,获得浮点值;甚至使用int()

Python &引用;类型错误:应为range()整数结束参数,获得浮点值;甚至使用int(),python,python-2.7,Python,Python 2.7,这是完整的代码。让我困惑的是,我使用int将l/2的上限转换为整数,但它仍然不起作用。除非。。。我不知道。谢谢 def switcheroo(vec): from math import ceil from __future__ import division l = len(vec) - 1 holdingcell = [] for i in range(int(ceil(l/2))): holdingcell = vec[i]

这是完整的代码。让我困惑的是,我使用int将l/2的上限转换为整数,但它仍然不起作用。除非。。。我不知道。谢谢

def switcheroo(vec):
    from math import ceil
    from __future__ import division
    l = len(vec) - 1
    holdingcell = []
    for i in range(int(ceil(l/2))):
        holdingcell = vec[i]
        vec[i] = vec[l-i+1]
        vec[l-i+1] = holdingcell
    return vec
我得到的错误是:

>>> o = switcheroo(v)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "switcheroo.py", line 8, in switcheroo
for i in range(int(ceil(l/2))):
TypeError: range() integer end argument expected, got float.
o=开关o(v) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 switcheroo中第8行的文件“switchero.py” 对于范围内的i(int(cel(l/2)): TypeError:应为range()整数结束参数,获得浮点值。
请显示完整的错误信息。您可以向我们显示更完整的代码吗?l声明和可能的值并完成循环您提供的代码是正确的:
int
函数将浮点数转换为整数。错误在代码中的其他地方。@MarcoBonelli:说得好!从我看来,这段代码看起来不错。值得一提的是,您的代码中有两个错误:第一,
From\uuuuu future\uuuu\import division
行应该位于文件的开头,而不是函数内部;其次,您的
vec[l-i+1]
超出范围。顺便说一句,代码的其余部分工作正常,并且在处理代码时,您的
范围不会给出任何错误。您可以重新定义
int()
以执行其他操作或执行其他操作。。。否则我对此一无所知。