Re: [問題] 排除輸出重複數值的方法

看板Python作者 (Apua)時間11年前 (2012/11/03 14:29), 編輯推噓7(704)
留言11則, 6人參與, 最新討論串5/6 (看更多)
其實要用世界奇觀來解決重複值的部份是可行的,而且幾乎不用變動您的結構 主要是進入下一層迴圈時就要求 大於等於 上一層迴圈的值 既然後面的值都不會比前面的值小 (遞增數列) 自然不會再有左右對稱而重複的問題。 以下是小修後的原po程式碼,重點只有 ``range(a,x)`` ,即上述; 而加入 break 的判斷,只是避免不必要的走到迴圈深處,因為走進去也求不到值。 x = 4 N = 9 for a in range(1,x): if a*8 > N: break N -= a for b in range(a,x): if b*7 > N: break N -= b for c in range(b,x): if c*6 > N: break N -= c for d in range(c,x): if d*5 > N: break N -= d for e in range(d,x): if e*4 > N: break N -= e for f in range(e,x): if f*3 > N: break N -= f for g in range(f,x): if g*2 > N: break N -= g for h in range(g,x): if h*1 > N: break if h == N: print (a,b,c,d,e,f,g,h) N += g N += f N += e N += d N += c N += b N += a pass -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.27.47

11/03 15:01, , 1F
多層回圈建意用 DFS 做...暴力寫多層會讓程式不易讀
11/03 15:01, 1F

11/03 15:02, , 2F
要維護或擴充也不方便 例如如果有 N 個變數就做不出來了
11/03 15:02, 2F
※ 編輯: apua 來自: 123.204.159.73 (11/03 15:45)

11/03 16:53, , 3F
小弟真的沒學過 所以才東拼西湊 XD
11/03 16:53, 3F

11/03 17:36, , 4F
回樓上,認真不開玩笑,推薦darkgerm的作法
11/03 17:36, 4F

11/03 17:37, , 5F
只要跟「生成一堆有規律的資料」有關的工具,找 itertools
11/03 17:37, 5F

11/03 17:37, , 6F
是的 了解 ^^"
11/03 17:37, 6F

11/03 17:37, , 7F
import itertools; help(itertools) 看一下,幫助很大
11/03 17:37, 7F

11/03 18:09, , 8F
謝謝^^
11/03 18:09, 8F

11/04 11:31, , 9F
原po你太閒了吧,幫忙裝潢世界奇觀幹嘛啊XDDD
11/04 11:31, 9F

11/05 11:22, , 10F
世界奇觀 XDD
11/05 11:22, 10F

11/05 18:07, , 11F
路過來世界奇觀觀光
11/05 18:07, 11F
文章代碼(AID): #1GbBd65h (Python)
討論串 (同標題文章)
文章代碼(AID): #1GbBd65h (Python)