打印语句无法在嵌套 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())
您没有使用列表元素的索引值,而是使用了值本身。
这是我的第一个问题,如果我做错了,请原谅我。
这次我使用 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)
将 returnNone
,因为您将print
函数调用到 return 并且默认情况下print
函数仅 returnNone
并且将从您的函数中 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())
您没有使用列表元素的索引值,而是使用了值本身。