因此,目前,我正在尝试创建一个简单的函数,它接受一个数字列表,并创建一个包含每个元素及其后续元素之间差异的新列表
比如说
difference([1, 2, 5, 3])
将返回[1, 3, -2]
现在我的代码
def difference(numbers):
for number in numbers:
i=0
dif_list=[]
while i < len(numbers)-1:
dif_list.append(numbers[i+1]-numbers[i])
i +=1
if len(dif_list) == len(numbers)-1:
return print(dif_list)
这确实返回了正确的输出,但是当我尝试使用断言来检查它时,它会说有一个断言错误
assert difference([1, 2, 5, 3]) == [1, 3, -2]
发出
<ipython-input-23-c9c23c8f4955> in <module>
----> 1 assert difference([1, 2, 5, 3]) == [1, 3, -2]
有人知道为什么会这样吗
如果通过删除
print
直接返回,它将起作用:输出:
pass
主要的问题是您返回了一个print(),但我也将您的dif_列表移到了for循环之外,因为这很有意义。变化不大,但这就是我要说的。我可能也会对它进行一些重构,但它现在已经运行了
编辑-我忍不住要重构一点,因为你的
for
循环完全没有必要,它什么都没做相关问题 更多 >
编程相关推荐