Python报错TypeError: 'NoneType' object is not iterable,无None元素求解决
问题解决:TypeError: 'NoneType' object is not iterable
错误根源在于你的代码只是打印了所有组合,但没有将这些组合收集起来返回。printWordsUtil和printWords函数最终返回的是默认的None,而你最后尝试用"\n".join(...)遍历None,自然会触发类型错误。
修复方案
调整代码逻辑,将生成的组合收集到列表中返回,而不是直接打印:
hashTable = ["", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"] def printWordsUtil(number, curr, output, n, result): if curr == n: # 将当前组合转为字符串,添加到结果列表 result.append(''.join(output)) return for i in range(len(hashTable[number[curr]])): output.append(hashTable[number[curr]][i]) printWordsUtil(number, curr + 1, output, n, result) output.pop() if number[curr] == 0 or number[curr] == 1: return def printWords(number, n): result = [] printWordsUtil(number, 0, [], n, result) return result number = 234 n = len(str(number)) num = list(map(int, str(number))) result = printWords(num, n) print("\n".join(result))
关键改动说明
- 给
printWordsUtil新增result参数,用于收集所有生成的字母组合字符串。 - 当递归到终点(
curr == n)时,不再直接打印output,而是将其转为字符串存入result。 printWords函数初始化result列表,调用递归函数后返回这个列表,这样result就不再是None,而是包含所有组合的列表。- 最后
join时直接遍历result即可,无需额外转义(因为已经是字符串类型)。
内容的提问来源于stack exchange,提问作者Athul Raju
相关产品推荐
相关产品推荐

