0 引言
你是不是还在为“当我们排成一个队列需要每隔几人找出一个人来”而烦恼,在生活中我们想要解决这类问题的话,过程是比较繁琐的,那如果我们使用Python程序直接找出需要的人的编号,是不是事半功倍呢?
1 问题
30个人在一条船上,超载,需要15人下船。于是人们排成一队,排队的位置即为他们的编号。报数,从1开始,数到9的人下船。如此循环,直到船上仅剩15人为止,问都有哪些编号的人下船了呢?
2 方法
此题的实际意义是指当船上的人大于15时就让第九个人下船,直到船上只有15个人即可。因此我们可以先将船上的30人存入列表people中,然后定义一个空白列表down。使用while循环结构,当people列表的元素大于15时即len(people)>15,将列表中的第8个元素people[8]添加到dowm列表中,然后将前8个people[:8]放在people[9:]后面(此处使用切片),继续寻找下一个第9人,最后返回列表down。
3 实验结果与讨论
通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。
代码清单 1
def f(): people = list(range(1,31)) down = [] while len(people)>15: down.append(people[8]) people = people[9:] + people[:8] return down print(f()) |
4 结语
针对下船问题,提出类似环形链表构造数据的方法,通过实际大量实验,证明该方法是有效的,在实验中,我们常常会思考为什么会需要解决这个问题,实际意义是什么,但其实在学习的过程中,学到的不仅仅是这个代码,更多学到的是怎么去解决问题,也是实际工作素养的提升和有效的锻炼。因此,在学习过程中,更应该注重思考。