【问题标题】:Why does my program not output anything in the command window when I run it?为什么我的程序在运行时没有在命令窗口中输出任何内容?
【发布时间】:2016-03-14 15:26:22
【问题描述】:

所以我定义了一个用于冒泡排序的函数,但是当我尝试运行它时,我得到一个空白的控制台窗口。我觉得它像语法错误一样非常愚蠢,但我无法确定它。代码如下:

def bubble(arr):
swap = True 
while (swap == True):
    swap = False
    for i in range(len(arr)-1):
        temp = arr[i]
        if arr[i]> arr[i+1]:
            temp = arr[i+1]
            arr[1] = arr[i+1]
    swap = True

array = ["AB","AAB","AAA"]
print (bubble(array))
input()

【问题讨论】:

  • 预期输出是什么? bubble 函数似乎什么都不返回,所以这是预期的行为
  • 没有return值,也陷入死循环
  • 你的缩进搞砸了bubble似乎没有任何定义。
  • 同样while 条件将始终为True。如果你想让它停止,你需要一个 break 语句
  • @zondo 没有。代码还有其他问题。最好让代码保持原样,让 OP 确认他们的代码是什么样的。通常,如果只是为 SO 问题提供正确的代码格式,那很好。但是当你开始编辑代码时,这是一个问题。

标签: python bubble-sort


【解决方案1】:

这是一个更有可能起作用的气泡函数。

def bubble(arr):
    swap = True
    while (swap == True):
        swap = False
        for i in range(len(arr)-1):
            if arr[i]> arr[i+1]:
                arr[i], arr[i+1] = arr[i+1], arr[i]
                swap = True
    return arr 

您原来的气泡功能存在各种问题。

  1. 您的函数不返回任何内容,因此print(bubble(array)) 将始终输出None
  2. 您的第二个 swap = True 语句放置不当,并在您的 while 循环的每个步骤中执行,导致无限循环
  3. 你写了arr[1] = arr[i+1]而不是arr[i] = arr[i+1],忘记了交换的第二部分。在 python 中,您可以交换两个值而不需要 temp 变量,这就是我所做的。

【讨论】:

    猜你喜欢
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多