2013-12-17 52 views
0

我試圖做一些分形圖像處理和運行我的代碼時,我得到告訴試圖for循環運行,被告知,「浮動」對象不是可迭代

Traceback (most recent call last): 
    File "all_the_maps.py", line 72, in <module> 
     (xh, yh) = Hf(xf,yf,r) 
TypeError: 'float' object is not iterable 

相關的代碼塊是

(xf,yf) = (0,0) 
(xh,yh) = (0,0) 

for n in xrange(N): 
    r = random.randint(1,10000) 
    (xf,yf) = F(xf,yf,r) 
    (xh,yh) = Hf(xh,yh,r) 
    h[int(round(xh)),int(round(yh))] = f[int(round(xf)), 
     int(round(yf))] 

和完整的文件是在http://pastebin.com/kbJD3BK9(這是很長,我不是在蟒蛇非常好,所以它可能是痛苦的閱讀)。我看了看其他人得到這個錯誤,似乎他們迭代了一些無法迭代的東西(例如,我在7中:而不是我在範圍(7)中:) 。但是,這似乎並不是我做錯了什麼,我真的不知道該怎麼做。如果任何人都可以幫忙,那真的很感激。

編輯:HF定義爲:

def Hf(x,y,r): 
    if r <= 10000*a*b: 
     return 0.5*x, 0.5*y 
    elif r <= 10000*b: 
     return 0.5*x + 255.0 
    elif r <= 10000*(1 - a + a*b): 
     return 0.5*x + 255.0, 0.5*y + 255.0 
    else: 
     return 0.5*x, 0.5*y + 255.0 
+0

你可以在這裏發佈函數'Hf'嗎? – aIKid

回答

2

你的第二個案例

elif r <= 10000*b: 
    return 0.5*x + 255.0 

不返回其他類似的元組。

澄清 - 在您的主程序中,在行(xh,yh) = Hf(xh,yh,r),您期待在右側的兩個項目。如果r <= 10000*bHf將只返回一個單獨的float,而不是其他情況返回的元組。