任何人都可以找出此代码中的问题吗?



有人能找出这段代码的错误吗?我是从书上抄下来的。

def findSmallestNumber(arr):
smallestNumber = arr[0]
for i in range(1,len(arr)):
if arr[i] < smallestNumber:
smallestNumber = arr[i]
return smallestNumber
def sort(arr):
newArr = []
for i in range(len(arr)):
smallestNumber = findSmallestNumber(arr)
newArr.append(arr.pop(smallestNumber))
return newArr

print (sort([12,32,4,22,6]))

我得到这个输出:

Traceback (most recent call last):
File "<string>", line 16, in <module>
File "<string>", line 12, in sort

试试这个:

def sort(arr):
newArr = []
for i in range(len(arr)):
smallestNumber = findSmallestNumber(arr)
newArr.append(arr[arr.index(smallestNumber)])
arr.remove(smallestNumber)
return newArr
pop((方法不需要元素的值,而是该元素的索引。https://docs.python.org/3.8/library/array.html#array.ArrayType.pop

请注意,数组元素甚至不必是数字。

试试这个:打印(排序(["狗"、"鸟"、"猫"、"牛"、"马"](

正确:

def findIndexOfSmallestValue(arr):
smallestValueIdx = 0
for i in range(1, len(arr)):
if arr[i] < arr[smallestValueIdx]:
smallestValueIdx = i
return smallestValueIdx

def sort(arr):
newArr = []
for i in range(len(arr)):
idx = findIndexOfSmallestValue(arr)
newArr.append(arr.pop(idx))
return newArr

最新更新