我对编程还很陌生;我只学习了几周的 Python。我最近得到了一个练习,要求我生成一个整数列表,然后在一个单独的列表中手动将数字从最低到最高排序。
import random
unordered = list(range(10))
ordered = []
lowest = 0
i = 0
random.shuffle(unordered)
lowest = unordered[0]
while i in unordered:
if unordered[i] < lowest:
lowest = unordered[i]
i += 1
if i >= len(unordered):
i = 0
ordered.append(lowest)
unordered.remove(lowest)
lowest = unordered[i]
print(ordered)
这是我目前所拥有的,坦率地说,它根本不起作用。我得到的伪代码是这样的:
- 创建一个空列表来保存有序元素
- 虽然无序列表中仍有元素
- 将变量 lowest 设置为无序列表中的第一个元素
- 对于无序列表中的每个元素
- 如果元素低于最低
- 将该元素的值分配给最低
- 将最低的追加到有序列表
- 从无序列表中删除最低的
- 打印出有序列表
到目前为止,我遇到的最大问题是我的计数器无法可靠地为我提供一种从列表中无序地挑选出最低数字的方法。然后我在为我的列表编制索引时遇到问题,即索引超出范围。谁能给我一些关于我哪里出错的反馈?
另外,我得到了这个我不太确定的信息:
您可以使用一种既定的方法对列表进行排序,称为选择排序。
这次我不应该使用 Python 的内置排序方法。这一切都应该手动完成。谢谢你的帮助!
原文由 Kordan9090 发布,翻译遵循 CC BY-SA 4.0 许可协议
你刚刚弄错了一些顺序:你需要每次都附加到你的有序列表中