在我认为是Python 2的JES中,如何对列表进行排序之前,如何对嵌套for循环进行计数

时间:2018-03-01 01:51:03

标签: python jes

我正在使用JES参加初学者编程课,我相信它是Python 2。 我的老师要求我们创建一个空列表,然后向其中添加随机数,然后从最低到最高排序。那部分我做得正确。额外的功劳是添加一个嵌套的for循环,它将计算对列表进行排序所需的rep。 这就是我所拥有的:



from random import *

def main():

# create list of 25 (this can be changed to number of your choice) random numbers from -100 to 100
# print list with message "list before shuffling"
  numList = []
  count = 0
  while count < 15:
    num = randint( -100 , 100 )
    numList.append(num)
    count = count + 1
  printNow("the List before shuffling:  " +str(numList))
  n = len(numList)
  add = 0
# Randomly shuffle list with items only moving if a lower number is being switched with a larger number
# do this 1000 times ( this can be changed to number of your choice)
# print list with message "list after shuffling"
  for reps in range (0 , 500):
    i = randrange(0, n)
    j = randrange(0, n)
# extra credit, add nested for loop to count number of reps it takes to sort the list    
    for sort in range(0, len(numList)):
      for item in range(sort+1, len(numList)):
        while numList[sort] < numList[item] or add < reps:
          add = add + 1
       
    if i < j:
      if numList[i] > numList[j]:
        temp = numList[i]
        numList[i] = numList[j]            
        numList[j] = temp
    elif j < i:
      if numList[i] < numList[j]:
        temp = numList[j]
        numList[j] = numList[i]
        numList[i] = temp
        
  print(" List was sorted in " + str(add) + " reps.")
  printNow("The List after shuffling:  " +str(numList))
&#13;
&#13;
&#13;

我的老师说我的额外学分中有太多循环。我被困住了,正在找人解释我做错了什么。 我不希望有人为我解决,但告诉我我做错了什么。

1 个答案:

答案 0 :(得分:0)

我不相信你有任何理由在你的两级while循环中放置一个for循环。使用两个for循环,您应该能够遍历列表并使用其他条件检查器(提示:您已经在此脚本中使用过),以确定当前列表元素是否在正确的位置(目前可能会稍后改组)。你可以查看:

  

冒泡排序