python - 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()
有人可以告诉我为什么会发生这个错误,正确的代码应该是什么?
解决方案
问题出在递归里面filterOddInList
。您正在调用它,item
它是一个数字。当您到达 时len(a)
,它会尝试提取数字的长度并失败。
推荐阅读
- jsf - 无法使用 PrimeFaces7.0 在 Chartjs 中隐藏图例
- ios - 如何在 iOS 中读取带有字符串值的 EXCEL XLSX 文件?
- go - xorm 示例不起作用:“运行时错误:无效的内存地址或 nil 指针取消引用”
- c# - 根据 A Foreign Key 专门增加一个 ID 值
- python - 显示这个 -__init__() 需要 1 个位置参数,但给出了 2 个 - 搜索结果
- regex - 用 Dart 链接 Html 文本
- python - 如何关闭从 .bat 文件打开的 python 脚本?
- php - Doctrine 查询迭代在 MS SQL Server 上不起作用 - 不允许新事务
- ios - 调用 view.layoutIfNeeded 后停止 UICollectionViewCell 上不需要的 flash 动画
- c++ - 使用智能指针