编写程序,将列表中的前10个元素升序排列,后10个元素降序排列,并输出结果。我的程序虽然排出来顺序了,但是前10位数字明明没有5,但是我的却索引到了5,这是为什么?
程序如下:
# 打印输出 list_pre
list_pre = [36, 19, 77, 80, 63, 99, 94, 21, 39, 44, 35, 79, 52, 49, 10, 83, 30, 96, 5, 36]
# 请对上面列表中的元素进行排序
for j in range(0, 10):
for i in range(0, 10):
if list_pre[i] > list_pre[i + 1]:
a = list_pre[i]
list_pre[i] = list_pre[i + 1]
list_pre[i + 1] = a
for j in range(0, 10):
for i in range(-11, 0):
if list_pre[i] < list_pre[i + 1]:
a = list_pre[i]
list_pre[i] = list_pre[i + 1]
list_pre[i + 1] = a
print(list_pre)
运行结果如下,可以看到第一个数字本来不应该是5,应该是19,但是却是5.
# for i in range(-11, 0) 这句代码有问题
# 当i = -1时, 下面的if 有i+1;正好渠道list_pre[0] 即第一次排完升序的第一个数5
# for i in range(-11, 0) 修改为# for i in range(-10, -1)
# -10 才是倒数第10个
排序逻辑完全正确,只是排序的参数有点不对,参考修改如下
# 打印输出 list_pre
list_pre = [36, 19, 77, 80, 63, 99, 94, 21, 39, 44, 35, 79, 52, 49, 10, 83, 30, 96, 5, 36]
# 请对上面列表中的元素进行排序
for j in range(0, 10):
for i in range(0, 10):
if list_pre[i] > list_pre[i + 1]:
a = list_pre[i]
list_pre[i] = list_pre[i + 1]
list_pre[i + 1] = a
for j in range(0, 10):
for i in range(10, 19):
if list_pre[i] < list_pre[i + 1]:
a = list_pre[i]
list_pre[i] = list_pre[i + 1]
list_pre[i + 1] = a
print(list_pre)
list_pre = [36, 19, 77, 80, 63, 99, 94, 21, 39, 44, 35, 79, 52, 49, 10, 83, 30, 96, 5, 36]
# 请对上面列表中的元素进行排序
for j in range(0, 10):
for i in range(0, 9):
if list_pre[i] > list_pre[i + 1]:
a = list_pre[i]
list_pre[i] = list_pre[i + 1]
list_pre[i + 1] = a
print(list_pre)
for j in range(0, 10):
for i in range(10, len(list_pre) - 1):
if list_pre[i] < list_pre[i + 1]:
a = list_pre[i]
list_pre[i] = list_pre[i + 1]
list_pre[i + 1] = a
print(list_pre)