我觉得我已经接近了,但不太确定为什么我的while循环停止执行,我希望它运行/增加计数器,然后条件为真,然后当它运行到无序的数字时,交换它们,然后减少计数器,然后再次运行while循环直到所有的数字都按顺序排列。s大于它前面的数字,但小于它后面的数字。如果这有意义的话。可能对你们大多数人来说很容易,但我只是第一次接触python。这是我目前为止的代码;
arr = [7, 14, 21, 32, 17, 48, 69, 78, 72]
count = 0
while (count < len(arr) - 1) and (arr[count] < arr[count+1]):
count += 1
if (arr[count] > arr[count+1]):
arr[count], arr[count+1] = arr[count+1], arr[count]
count -= 1
continue
print(count)
print(arr)
在我的代码下面加上一些伪代码使它更清晰。
# list of numbers out of order
arr = [7, 14, 21, 32, 17, 48, 69, 78, 72]
# first position in index
count = 0
# loop to check first if value of index position is less than length of array -1 (9-1 = 8)
# or if value of index position is less than index position + 1 (next index position)
while (count < len(arr) - 1) and (arr[count] < arr[count+1]):
# if true loop should continue + 1 on the next index
count += 1
# if the value of number in the current index position is greater than the next number it swaps them.
if (arr[count] > arr[count+1]):
arr[count], arr[count+1] = arr[count+1], arr[count]
count -= 1
continue
print(count)
print(arr)
我已经尝试了各种不同的方法,我想我只是被while循环的实际工作方式所困,我需要在遇到第一个false语句后让循环再次运行。
1条答案
按热度按时间7hiiyaii1#
这将以问题所要求的方式工作:
结果是:
只要
break
条件存在,您也可以使用while loop
实现相同的效果。