首页 > 解决方案 > python中的“int类型的对象没有长度”是什么意思?

问题描述

我尝试在 Windows 10 上用 Python 3.6.5 编写一个程序,该程序将接受整数,然后打印出奇数。

这是我的代码:

def listInput():
    aList = list()
    while True:
        num = input("Please input a number:")
        if num == 'done':
            break
        num = int(num)
        aList.append(num)
    return aList

def isOddNumber(y):
    if y%2 == 0:
        return False
    else:
        return True

def filterOddInList(a):
    i = len(a)
    while i >= 0:
        item = a[(i-1)]
        odd = filterOddInList(item)
        if odd == False:
            x.pop()

def main():
    a = listInput()
    print(a)
    a = filterOddInList(a)
    print(a)

main()

这是应该发生的:

Please input a number:1
Please input a number:2
Please input a number:3
Please input a number:4
Please input a number:5
Please input a number:done
[1, 2, 3, 4, 5]
[1, 3, 5]

这就是实际发生的事情:

Please input a number:1
Please input a number:2
Please input a number:3
Please input a number:4
Please input a number:5
Please input a number:done
[1, 2, 3, 4, 5]
Traceback (most recent call last):
  File "C:\Users\Jerry Cui\Documents\New folder\Homework\oddonly.py", line         30, in <module>
    main()
  File "C:\Users\Jerry Cui\Documents\New folder\Homework\oddonly.py", line 27, in main
    a = filterOddInList(a)
  File "C:\Users\Jerry Cui\Documents\New folder\Homework\oddonly.py", line 20, in filterOddInList
    odd = filterOddInList(item)
  File "C:\Users\Jerry Cui\Documents\New folder\Homework\oddonly.py", line 17, in filterOddInList
    i = len(a)
TypeError: object of type 'int' has no len()

有人可以告诉我为什么会发生这个错误,正确的代码应该是什么?

标签: pythonpython-3.xintsyntax-error

解决方案


问题出在递归里面filterOddInList。您正在调用它,item它是一个数字。当您到达 时len(a),它会尝试提取数字的长度并失败。


推荐阅读