【发布时间】:2021-03-05 13:11:47
【问题描述】:
pancake_sort 按降序对一些数字进行排序(将最大的数字翻转到数组的顶部(末尾)然后返回底部),然后打印它执行该操作的索引 (+1)。这意味着数组[4,3,2,1,5]将从索引0翻转,使其变为[5,1,2,3,4]并打印1,然后将从索引1翻转并变为[5,4,3,2,1],并将打印2。一旦完成所有它的翻转,然后应该打印 0。我尝试将数组的不同部分添加在一起(翻转的部分和保持相同的部分),但它不起作用。我得到这个输出和错误信息:
1
1 Traceback (most recent call last):
File "/Users/khadijah/Documents/pypan.py", line 32, in <module>
pancake_sort(arr)
File "/Users/khadijah/Documents/pypan.py", line 19, in pancake_sort
mi = arr.index(max(arr[i:arr_len]))
ValueError: max() arg is an empty sequence
我知道它与mi 值中的i 有关,但我认为我需要它,以便它只检查i 和arr_len 之间的数字。使用arr_len-1 也不起作用。你觉得我做错了什么?
这是我的代码:
def pancake_sort(arr):
arr_len=len(arr)
i=0
for i in range(0,arr_len-1):
mi = arr.index(max(arr[i:arr_len]))
arr = arr[0:mi-1]+arr[mi::-1]
print()
if mi == arr_len-1:
print("1", end = " ")
else: print(mi+1, end = " ")
if i==0:
arr=arr[::-1]
else:
arr = arr[0:i-1]+arr[i::-1]
return arr
arr = [4,3,2,1,5]
pancake_sort(arr)
【问题讨论】: