尝试运行forloop,被告知“float”对象不是iterab

2024-06-29 00:02:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一些分形图像处理,当运行我的代码时,我被告知

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(它很长,我不太擅长python,所以读起来可能会很痛苦)。你知道吗

我已经看过其他人得到这个错误,似乎他们正在迭代一些不能迭代的东西(例如,对于7中的I:而不是范围(7):)中的I)。然而,这似乎不是我做错了什么,我真的不知道该怎么办。如果有人能帮上忙,我将不胜感激。你知道吗

编辑: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

Tags: 代码inmostreturn图像处理int分形yh
1条回答
网友
1楼 · 发布于 2024-06-29 00:02:16

你的第二个案子

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

不会像其他的那样返回元组。你知道吗

为了澄清-在主程序中,在(xh,yh) = Hf(xh,yh,r)行中,您希望右侧有两个项目。如果r <= 10000*bHf只返回一个浮点值,而不是其他情况返回的元组。你知道吗

相关问题 更多 >