打印语句无法在嵌套 loops/function 内的终端上输出

Print statement failing to output on terminal inside nested loops/function

这是我的第一个问题,如果我做错了,请原谅我。

这次我使用 Visual Studio 编写了一个简单的排序算法,但遇到了问题。我需要打印数字列表,不仅要检查它是否正在排序,还要查看最终产品。但是,终端没有显示任何内容。但是,在具有嵌套循环的函数外部打印可以正常工作。我也尝试打印一个字符串,但没有任何结果。我假设我遗漏了一些简单的东西,但我想我会在这里问,因为我以前从未在这里问过问题。提前致谢。如果对提问有什么建议,请尽管说。

bunny = 0
turtle = 0
temp = 0
sequence = [2, 8, 7, 1, 4]


def bubblesort():

    for x in sequence:
        turtle = sequence[x]
        for y in sequence:
            bunny = sequence[y]
            if sequence[y] < sequence[x]:
                temp = sequence[y]
                sequence[y] = sequence[x]
                sequence[x] = temp
                temp = 0
    return print(sequence)


print(sequence)

正如@polortiz40 在他的评论中提到的那样,您没有在代码段中显示对 bubblesort() 的调用。但是我假设你会这样做。

我认为您的代码永远不会到达函数的 return 语句,因为它在此之前崩溃了。

for x in sequence:
        turtle = sequence[x]

x 将是:2、8、7、... 在第二次迭代中,您将尝试访问不存在的 sequence[8]

根据评论说 for 循环不会像预期的那样遍历索引,您可以改为通过“enumerate”方法获取索引。我还做了一些重构:你不需要在代码的开头声明 bunny、turtle、temp,而且我做到了,所以 bubblesort 将一个向量作为参数而不是编辑一个全局的。

sequence = [2, 8, 7, 1, 4]

def bubblesort(seq):
    for x, turtle in enumerate(seq):
        for y, bunny in enumerate(seq):
            if bunny < seq[x]:
                temp = bunny
                seq[y] = seq[x]
                seq[x] = temp
    print(seq)

bubblesort(sequence)

首先是三件事

  • 您没有调用函数 bubblesort() 那么只有函数会起作用。

  • 函数中的
  • return print(sequence) 将 return None,因为您将 print 函数调用到 return 并且默认情况下print 函数仅 return None 并且将从您的函数中 return 编辑。您可以将其更改为如下两行

     print(sequence)
     return sequence
    
  • 你的函数有错误,你可以在下面的代码中调用函数后看到它。

     bunny = 0
     turtle = 0
     temp = 0
     sequence = [2, 8, 7, 1, 4]
    
    
     def bubblesort():
    
         for x in sequence:
             turtle = sequence[x]
             for y in sequence:
                 bunny = sequence[y]
                 if sequence[y] < sequence[x]:
                     temp = sequence[y]
                     sequence[y] = sequence[x]
                     sequence[x] = temp
                     temp = 0
         print(sequence)                
         return sequence
    
     print("After bubble sorting: ", bubblesort())
    

您没有使用列表元素的索引值,而是使用了值本身。