pop((方法不需要元素的值,而是该元素的索引。https://docs.python.org/3.8/library/array.html#array.ArrayType.pop
有人能找出这段代码的错误吗?我是从书上抄下来的。
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
请注意,数组元素甚至不必是数字。
试试这个:打印(排序(["狗"、"鸟"、"猫"、"牛"、"马"](
正确:
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