我已经开始学习Udacity计算机科学入门课程,但遇到了以下问题: 定义一个过程,该过程接受1-9之间的数字字符串 输出带有以下参数的列表: 字符串中的每个数字都应插入列表中。 如果字符串中的数字x小于或等于 到前面的数字y,应插入数字x 进入子列表。继续将以下数字添加到 子列表,直到达到数字z 大于数字y。 然后将此数字z添加到常规列表中,然后继续。
我找到了这个解决方案,该解决方案没有问题:
def numbers_in_lists(theString):
maxNum = int(theString[0])
mainList = [maxNum]
for e in theString[1:]:
num = int(e)
if num > maxNum:
mainList.append(num)
maxNum = num
else:
if (type(mainList[-1]) == list):
mainList[-1].append(num)
else:
mainList.append([num])
return mainList
这是我的代码。
def numbers_in_lists(s):
p = [int(s[0])]
n = len(s)
i = 1
while i < n:
first = int(s[i-1])
second = int(s[i])
if (second > first): p = p.append(second)
if (second <= first):
if (type(p[-1]) == list): p[-1].append(second)
else: p.append([second])
i = i + 1
return p
除了while循环外,其他类似。我收到错误
line 10, in numbers_in_lists
if (type(p[-1]) == list): p[-1].append(second)
TypeError: 'NoneType' object is not subscriptable
我找到了解决方案,但是我不明白为什么我的代码无法正常工作以及如何解决错误。
答案 0 :(得分:0)
这是问题所在
if (second > first): p = p.append(second)
append()
方法修改原始列表;它不会返回新列表。它返回None
。
只需使用p.append(second)
。