繁体   English   中英

在我认为是Python 2的JES中,我如何做一个嵌套的for循环来计算重复次数,直到对列表进行排序

[英]In JES which I believe is Python 2, how do I do a nested for loop to count reps until a list is sorted

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

 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)) 

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

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

气泡排序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM