【问题标题】:Bubble sort algorithm input not working (Python)冒泡排序算法输入不起作用(Python)
【发布时间】:2021-02-16 11:45:36
【问题描述】:

这是一个关于python中数组处理的一些问题。

我有以下代码从变量sorted 中读取数字数组:

print("Original: ",sorted)

for largeRepeat in range(0,len(sorted)):
    for Repeat in range(0,len(sorted)-1):
        Number1 = sorted[Repeat]
        Number2 = sorted[Repeat + 1]
        if Number1 > Number2:
            sorted[Repeat] = sorted[Repeat+1]
            sorted[Repeat+1] = Number1



print("Sorted: ",sorted)

现在,我遇到的问题是我可以通过 2 种不同的方式为数组分配一些值,硬编码到程序中:

sorted = [1,11,22,2]

或通过用户输入,拆分使用split()提供的数字:

inputs = input("Enter numbers as comma (,) separated values: ")
ToSort = inputs.split(",")
sorted = ToSort

如果我使用永久方法,程序正确返回:

Original:  [1, 11, 22, 2]
Sorted:  [1, 2, 11, 22]

但是,如果我使用用户输入,程序会错误地返回:

Original:  ['1', '11', '22', '2']
Sorted:  ['1', '11', '2', '22']

谁能提供任何关于为什么会发生这种情况的见解,我已尝试多次运行该程序并将其隔离到此特定部分。

我还注意到它会将用户输入中的数字作为文本字符串返回,但我不明白这会如何导致问题。 (对不起,我对此很陌生!)

提前致谢!

编辑:谢谢,这是solved

【问题讨论】:

  • 需要明确的是,用户输入的文本字符串是一个大问题,因为对于计算机而言,字符串只是 ASCII 数字,而不是存储在字符串中的值。
  • @M-Chen-3,谢谢,有道理!
  • 只是出于好奇。为什么要编写自己的排序而不是仅仅使用 Python 的内置排序?冒泡排序是目前最糟糕的排序算法之一。它甚至比其他 O(n^2) 算法还要慢。你的整个代码可以重写为sorted.sort()
  • @FrankYellin,这是某人给我的挑战。出于教育目的。不工作,只是一个挑战。
  • 好的。我很害怕这是一个家庭作业或什么的,我想知道他们为什么教你倒带录像机或拨打旋转电话的道德等价物。

标签: python input bubble-sort


【解决方案1】:

您需要将每个输入转换为int

ToSort = list(map(int, inputs.split(",")))

【讨论】:

    猜你喜欢
    • 2014-12-30
    • 2021-03-06
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多