我正在尝试为我的家庭工作创建一个原始的排序算法,但我不能让它工作,我不明白为什么。
Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml"));
我知道我不应该在程序中使用打印功能,但我希望它简洁和打包。所以这是我得到的输出:
def sa(x):
print(x)
i = 0
s_array = []
while x:
for x[i] in x:
if x[i] == min(x):
s_array.append(x.pop(i))
i = 0
elif x[i] == max(x):
s_array.append(x.pop(i))
i = 0
else:
i += 1
print(s_array)
我有这样的代码:
>>> sa([89, 23, 33, 45, 10, 12, 45, 45, 45])
[89, 23, 33, 45, 10, 12, 45, 45, 45]
[89, 45, 45, 45, 45, 45, 45, 45, 12]
但是把它作为输出并认为我必须添加max()elif:
def sa(x):
print(x)
i = 0
s_array = []
while x:
for x[i] in x:
if x[i] == min(x):
s_array.append(x.pop(i))
i = 0
else:
i += 1
print(s_array)
请帮忙。
答案 0 :(得分:0)
你的for循环的编写方式你根据迭代为x[i]
中的元素分配 x
,请考虑一下:
i = 0
x = ["a","b","c","d","e"]
for x[i] in x:
print(x)
这将显示以下内容:
['a', 'b', 'c', 'd', 'e']
['b', 'b', 'c', 'd', 'e']
['c', 'b', 'c', 'd', 'e']
['d', 'b', 'c', 'd', 'e']
['e', 'b', 'c', 'd', 'e']
请注意,当列表被迭代时,第一个元素x[0]
正在更改为列表的每个元素,并且当i
更改时,它基本上将列表中的元素混合在一个可预测但很少有用的方式。相反,因为您只想循环,而列表中仍有元素,只需删除内部for
循环:
while x:
if x[i] == min(x):
s_array.append(x.pop(i))
i = 0
else:
i += 1