Python 尝试在子例程中运行WHILE循环时出错

Python 尝试在子例程中运行WHILE循环时出错,python,Python,我正在尝试创建一个程序,允许用户输入一个数字列表,根据用户的选择,通过冒泡排序、快速排序、插入排序或合并排序进行排序 我正在测试气泡排序的选择,但是我有问题。变量编号不会打印,当从要打印的子程序中取出时,内容与输入的列表相同 有谁能建议一种方法来修复它,使冒泡排序在用作子例程时能够正常运行吗?仅供参考:python的版本是3.6.2,气泡排序在不在子例程中时可以工作 def bubble(numbers): import time start = time.time()

我正在尝试创建一个程序,允许用户输入一个数字列表,根据用户的选择,通过冒泡排序、快速排序、插入排序或合并排序进行排序

我正在测试气泡排序的选择,但是我有问题。变量编号不会打印,当从要打印的子程序中取出时,内容与输入的列表相同

有谁能建议一种方法来修复它,使冒泡排序在用作子例程时能够正常运行吗?仅供参考:python的版本是3.6.2,气泡排序在不在子例程中时可以工作

def bubble(numbers):
    import time 
    start = time.time()
    numItems = len(numbers)
    for i in range (0, numItems - 2):
        for j in range (0, numItems - i - 2):
            if numbers [j] > numbers [j + 1]:
                temp = numbers[j]
                numbers[j] = numbers[j + 1]
                numbers[j + 1] = temp
        print (numbers)
    end = time.time()
    print (end - start)

print ("Bubble, merge, quick and insertion sort visulizer.")
numbers = [int(x) for x in input("Input your list ").split()]
bubble(numbers) 

你应该让你的
气泡
函数
返回
结果
数字
列表,这样你的主程序就可以打印它了。请注意,对于冒泡排序实现是错误的,因为它应该有一个覆盖所有项的上限:

def bubble(numbers):
    import time 
    start = time.time()
    numItems = len(numbers)
    for i in range (0, numItems):
        for j in range (0, numItems - i - 1):
            if numbers [j] > numbers [j + 1]:
                temp = numbers[j]
                numbers[j] = numbers[j + 1]
                numbers[j + 1] = temp
    end = time.time()
    print (end - start)
    return numbers

print ("Bubble, merge, quick and insertion sort visulizer.")
numbers = [int(x) for x in input("Input your list ").split()]
numbers = bubble(numbers)
print(numbers)

请以文本形式发布代码没有文本图像我已经编辑了两次以添加代码,第一次编辑时输入错误。适合我。为什么你认为它不工作?我的代码的输出只是(结束-开始)计时器,它是0.0。我的意图是它将输出排序列表。你永远不会打印排序列表…现在测试这个,程序将只打印列表输入。你的输入是什么?顺便说一下,虽然这是你问的,但是你的冒泡排序实现是错误的。我已经更新了我的答案,以更正您的实现中的上限。除非我在某个地方搞砸了,否则您给我的代码仍然会输出未排序的列表。您肯定有。在我的测试中,它可以很好地打印排序后的数字。