【发布时间】: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