(编辑:jimmy 日期: 2024/12/27 浏览:2)
问题描述:
30 个人在一条船上,超载,需要 15 人下船。于是人们排成一队,排队的位置即为他们的编号。
报数,从 1 开始,数到 9 的人下船。如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?
解决思路:
给30个人编号1-30,每个人的初值都是1(在船上),i代表他们的编号,j代表被扔下船的人数(j=15时循环结束),用check记数,check=9时将对应编号i的人置0(扔下船)并让check重新记数。
当i等于31时,手动将i置为1
当对应编号i的人值为0时,代表此人已经不在船上,i+1找到下一个人记数,以此类推。
people={} for x in range(1,31): people[x]=1 # print(people) check=0 i=1 j=0 while i<=31: if i == 31: i=1 elif j == 15: break else: if people[i] == 0: i+=1 continue else: check+=1 if check == 9: people[i]=0 check = 0 print("{}号下船了".format(i)) j+=1 else: i+=1 continue
执行以上实例,输出结果为:
9号下船了
18号下船了
27号下船了
6号下船了
16号下船了
26号下船了
7号下船了
19号下船了
30号下船了
12号下船了
24号下船了
8号下船了
22号下船了
5号下船了
23号下船了