看板 Python 關於我們 聯絡資訊
各位好 程式 8個變數 範圍由1~2 輸出 8個變數全部相加 = 9的結果 x=3 for a in range(1,x): for b in range(1,x): for c in range(1,x): for d in range(1,x): for e in range(1,x): for f in range(1,x): for g in range(1,x): for h in range(1,x): for i in range(1,x): if a+b+c+d+e+f+g+h == 9: print "%d %d %d %d %d %d %d %d " % (a,b,c,d,e,f,g,h) 但是輸出結果有重複 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 --------------------- 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 請問要如何排除? 希望也可以排除 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 這種組合 謝謝 2 1 1 1 1 1 1 1 -- 推 kkessherry:總之南極發生啥事都人類幹的啦就對了?? 02/26 19:34 推 NicoRobin26:企鵝:不然怪拎北喔? 02/26 19:34 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.113.126.177
kdjf:*1, 2 和 2, *1 為什麼算是一樣? 11/02 11:15
sofaly:抱歉因為有特殊需求@@" 我想用程式輔助我其他課業上的問題 11/02 11:19
0-------- --------0 把第2個 轉180度 就跟第一個相同 ^^" ※ 編輯: sofaly 來自: 120.113.126.177 (11/02 11:20)
mikapauli:你的變數i是拿來做什麼的? 11/02 11:30
sofaly:我要從9個變數 算到 三個變數 所以全都先打上去 11/02 11:40
sofaly:這是 有八個變數 的程式.. 因為想說能用就好 呵呵 11/02 11:41
我找到堪用的方法@@" x=4 list2 = [ ] for a in range(1,x): for b in range(1,x): for c in range(1,x): for d in range(1,x): for e in range(1,x): for f in range(1,x): for g in range(1,x): for h in range(1,x): for i in range(1,x): if a+b+c+d+e+f+g == 9: list1=["%d %d %d %d %d %d %d " % (a,b,c,d,e,f,g)] for i in list1: if not i in list2: list2.append(i) print list2 輸出 ['1 1 1 1 1 1 3 ', '1 1 1 1 1 2 2 ', '1 1 1 1 1 3 1 ', '1 1 1 1 2 1 2 ', '1 1 1 1 2 2 1 ', '1 1 1 1 3 1 1 ', '1 1 1 2 1 1 2 ', '1 1 1 2 1 2 1 ', '1 1 1 2 2 1 1 ', '1 1 1 3 1 1 1 ', '1 1 2 1 1 1 2 ', '1 1 2 1 1 2 1 ', '1 1 2 1 2 1 1 ', '1 1 2 2 1 1 1 ', '1 1 3 1 1 1 1 ', '1 2 1 1 1 1 2 ', '1 2 1 1 1 2 1 ', '1 2 1 1 2 1 1 ', '1 2 1 2 1 1 1 ', '1 2 2 1 1 1 1 ', '1 3 1 1 1 1 1 ', '2 1 1 1 1 1 2 ', '2 1 1 1 1 2 1 ', '2 1 1 1 2 1 1 ', '2 1 1 2 1 1 1 ', '2 1 2 1 1 1 1 ', '2 2 1 1 1 1 1 ', '3 1 1 1 1 1 1 '] ※ 編輯: sofaly 來自: 120.113.126.177 (11/02 12:44) 不知道有沒有問題@@" ※ 編輯: sofaly 來自: 120.113.126.177 (11/02 12:44)
qwertmn:可以用sets http://docs.python.org/2/library/sets.html 11/02 13:00
uranusjr:世界奇觀... 11/02 13:15
sofaly:謝謝 11/02 13:19
抱歉可提示一下第2個問題嗎 先把 '1 1 1 1 1 1 3'跟'1 1 1 1 3 1 1' 打散(?) 然後排序 再封裝 再去比對重複? ※ 編輯: sofaly 來自: 120.113.126.177 (11/02 13:36)
birdhackor:你到底要排除哪幾種? '1 1 1 1 1 1 3'跟 11/02 14:01
birdhackor:'1 1 1 1 3 1 1'也是要排除的嗎? 11/02 14:01
sofaly:是的 所有包含 六個1 加 一個3 都算重複 11/02 14:13
birdhackor:那 '1 1 1 1 1 2 2' 與 '1 1 2 2 1 1 1' 呢? 11/02 14:15
sofaly:相同@@" 11/02 14:19
birdhackor:所以你要的就是八個正整數加總為九的"組合"的意思? 11/02 14:20
sofaly:請等等 我上傳圖片 11/02 14:20
sofaly:http://ppt.cc/8yg0 11/02 14:24
sofaly:我在計算機構設計 所以 兩個圖轉動或翻轉一下 就相同 11/02 14:25
sofaly:要排除.....謝謝各位 我找資料好像很複雜 我用人工的好了 11/02 14:26
sofaly:= = 左邊的箭頭畫錯....請見諒 11/02 14:27
birdhackor:只是翻轉或旋轉不要? 所以像是 '1 3 1 3' 與 '1 3 3 1' 11/02 14:42
birdhackor:視為不同 但 '1 3 3 1'與 '1 1 3 3', '3 1 1 3' 11/02 14:42
birdhackor:'3 3 1 1' 視為相同? 11/02 14:43
sofaly:= = 您說得好像對... 我再研究看看 謝謝 11/02 14:47
sofaly:抱歉是我想的太簡單 打擾各位 11/02 14:48