目录
游戏规则
算法思考
代码实现
游戏规则:
30 个人在一条船上,超载,需要 15 人下船。
于是人们排成一队,排队的位置即为他们的编号。
报数,从 1 开始,数到 9 的人下船。
如此循环,直到船上仅剩 15 人为止
算法思考:毫无疑问,每数到第九个人就下船,并且重新开始计数,我们可以简单的想到以下代码:
while i: check += 1 if check == 9: people[i] = 0 check = 0 print("{}号下船了".format(i)) else: i+=1 continue
但是在我们的代码中,并不能体现当第一轮每九个人(也就是3个人)下船后,再一次计数,此时people[ ]中之前下船的人仍然占据着位置,并没有真正的清除。则需要continue跳过:
if people[i] == 0: i+=1 continue else: check+=1 if check == 9: people[i]=0 check = 0 print("{}号下船了".format(i))
如此一来会跳过之前已经下船的人编号,聪明的读者也发现了people[i]==0是用的字典方法,也就是说,想要判断该编号的人有没有下船,则需要字典的方法,编号即键对应的值是否为1来判断:
people={} for x in range(1,31): people[x]=1 #创建关于people的字典,每个键的值均为1代码实现:
people={} for x in range(1,31): people[x]=1 #创建people字典,每个编号的值都为1 # print(people) check=0 #循环9,记数 i=1 #people的编号 j=0 #下船人数或者船余下人数 while i<=31: if i == 31: i=1 #每当循环到最后一个人时,重新循环 elif j == 15: break #如果场上剩余15人,终止循环 else: if people[i] == 0: #读取到如果该编号的值等于0即已经下船 则跳转下一位 i+=1 continue else: check+=1 #循环9记数加一 if check == 9: people[i]=0 check = 0 print("{}号下船了".format(i)) #如果记数满了 则输出,并且多一位下船人 j+=1 else: i+=1 continue #循环未满,下一位
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)