赞
踩
目录
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 #循环未满,下一位
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。