問題描述:
30 個人在一條船上,超載,需要 15 人下船,于是人們排成一隊,排隊的位置即為他們的編號,
報數,從 1 開始,數到 9 的人下船,如此回圈,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?
查看網上的資料都是把人員實體為字典,1代表在船上,0代表下船,網上的實作代碼如下:
1 people={} 2 for x in range(1,31): 3 people[x]=1 4 # print(people) 5 check=0 6 i=1 7 j=0 8 while i<=31: 9 if i == 31: 10 i=1 11 elif j == 15: 12 break 13 else: 14 if people[i] == 0: 15 i+=1 16 continue 17 else: 18 check+=1 19 if check == 9: 20 people[i]=0 21 check = 0 22 print("{}號下船了".format(i)) 23 j+=1 24 else: 25 i+=1 26 continueView Code
重新寫了一種以list來實作該功能,代碼如下:
1 people = [x for x in range(1, 31)] # 生成人員 2 3 xia = [] # 存放下船人的list 4 j = 0 # 上次順序下船的余量 5 while True: 6 for i in range(1, len(people)+1): 7 8 if (i+j) % 9 == 0: 9 xia.append(people[i-1]) 10 j = (len(people) + j) % 9 11 print("下船者:", xia) 12 for x in xia: 13 people.remove(x) 14 xia = [] 15 if len(people) <= 15: 16 break
本文來自博客園,作者:平行時空的旅者,轉載請注明原文鏈接:https://www.cnblogs.com/yifengyu/p/16407673.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/495541.html
標籤:其他
下一篇:java運算運算子示例大全
