关于自学冒泡排序时遇到的一些问题(语言-python)

问题遇到的现象和发生背景

根据教程自学Python时发现

遇到的现象和发生背景,请写出第一个错误信息

无错误

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
l = [6, 5, 4, 3, 2, 1]
for i in range(1, len(l)):  # 1,5 #循环4大次  4
    for j in range(len(l) - i):
        if l[j] > l[j + 1]:
            l[j], l[j + 1] = l[j + 1], l[j]
print(l)
运行结果及详细报错内容

教程中说是排序1,2,3,4,5,但冒泡排序会不可避免地多添加一个元素吗?

[1, 2, 3, 4, 5, 6]
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

我还另外写过一个简单的理解冒泡排序的过程,请问是这种原理吗?

a = [6,4,2,5,3,1]
if a[0] > a[1]:
    a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
    a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
    a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
    a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
    a[4],a[5] = a[5],a[4]
if a[0] > a[1]:
    a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
    a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
    a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
    a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
    a[4],a[5] = a[5],a[4]
if a[0] > a[1]:
    a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
    a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
    a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
    a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
    a[4],a[5] = a[5],a[4]
if a[0] > a[1]:
    a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
    a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
    a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
    a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
    a[4],a[5] = a[5],a[4]
if a[0] > a[1]:
    a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
    a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
    a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
    a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
    a[4],a[5] = a[5],a[4]
print(a)
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

我希望有人能跟我说一下冒泡排序两个for in循环的原理,感谢解答

回答:你那个数组里面就是1到6啊,排序出来不是正确的吗。如果你想输出1到5,那你就把原来的数组变一下。然后你下面模拟的那个步骤是正确的,就是有一些重复的步骤,在第一次比较了a4和a5之后,a5已经是最大的了,后面就可以不用再比较a4和a5了。这个在你上面的代码写的倒是正确的