[問題] 吃藥隨機分配

看板Python作者 (jackflu)時間8年前 (2017/06/30 12:01), 8年前編輯推噓3(305)
留言8則, 5人參與, 最新討論串1/1
目的:不重複的分配吃藥,假設有7種藥,3餐吃2顆,睡前吃1顆。 想要達成: Morning : [4, 5] Noon : [7, 3] Night : [2, 1] Sleep : [6] 我寫的 2.7版本 import random drug = [1, 2, 3, 4, 5, 6, 7 ] take = random.sample(drug,2) print "Morning : " , take take = random.sample(drug,2) print "Noon : " , take take = random.sample(drug,2) print "Night : " , take take = random.sample(drug,1) print "Sleep : " , take 我只能寫出會重複的 新手爬文後想不出來請教 感謝指導 ---更新 感謝幾位大大 目前只看的懂一樓大大的--- import random drug = [1, 2, 3, 4, 5, 6, 7 ] take = random.sample(drug,2) print "Morning : " , take for t in take : drug.remove(t) take = random.sample(drug,2) print "Noon : " , take for t in take : drug.remove(t) take = random.sample(drug,2) print "Night : " , take for t in take : drug.remove(t) take = random.sample(drug,1) 有更漂亮的寫法嗎? --- 再次感謝 換了看起來比較舒服 --- import random drug = [1, 2, 3, 4, 5, 6, 7 ] random.shuffle(drug) print drug print "Moring: ",(drug[0],drug[1]) print "Noon: " ,(drug[2],drug[3]) print "Night: " ,(drug[4],drug[5]) print "Sleep: " , drug[6] 還希望可以更簡短,繼續研究看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.113.217 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1498795285.A.BC8.html

06/30 12:08, , 1F
for t in take : drug.remove(t)
06/30 12:08, 1F

06/30 13:44, , 2F
permutation ...
06/30 13:44, 2F

06/30 13:45, , 3F
or shuffle
06/30 13:45, 3F

06/30 14:10, , 4F
最快就是拿出來後要從drug中移除阿...
06/30 14:10, 4F

06/30 15:42, , 5F
drug = [ s for s in drug if s not in take]
06/30 15:42, 5F
※ 編輯: jackflu (36.231.113.217), 06/30/2017 21:09:35

06/30 23:47, , 6F
用shuffle 然後pop
06/30 23:47, 6F

07/01 12:35, , 7F
random.shuffle(drug) 然後print(drug)出來看看便知
07/01 12:35, 7F
※ 編輯: jackflu (1.163.97.26), 07/01/2017 18:03:42

07/01 22:29, , 8F
我認為不需要了 再短會降低可閱姓
07/01 22:29, 8F
文章代碼(AID): #1PLSqLl8 (Python)