+ =在For循环中不起作用

时间:2014-06-15 12:42:21

标签: python python-3.x

我是Python的新手,对一个小问题感到很伤心,这是我的代码:

BitSize = [768, 768]


myCropedTop = 0
for Lenght in BitSize:
    myCropedHeight += Lenght
    left = 0
    top = myCropedTop
    right = width
    bottom = myCropedHeight
    TheBit = Myimage.crop((left, top, right, bottom))
    #increment MyCroped top so the next croped bit start where the previous end
    TheBit.show()
    myCropedTop += Lenght

我已经习惯了MaxScript,这几乎是我的第一个Python脚本,所以我有几个问题。找到这些特定小事的答案并不容易。

  1. 我的第一个myCropedHeight += Lenght循环不起作用,为什么? (最后的第二个是我知道它不是语法错误)。

  2. 正如我所说,我来自MaxScript背景,并且maxscript循环被括在括号中,例如:

    For i in Myexemple do
    (
       Do loop-stuff
    )
    

    ..问这个当然有点愚蠢但是,我们怎么该在没有括号的情况下划分Python中的循环?

  3. myCropedHeight + = Lenght NameError:name' myCropedHeight'未定义

    这是我第一次得到的错误+ =,这对我没什么帮助。 myCropedHeight =长度可以......

1 个答案:

答案 0 :(得分:0)

根本没有声明

myCropedHeight变量,因此myCropedHeight += Lenght无效。在使用+=(或任何其他运算符)更改值之前,必须先声明值。

Python中的代码由缩进分隔,因此不应该成为循环一部分的下一行应与for循环行在同一行中对齐。

for Lenght in BitSize:
    myCropedHeight += Lenght
    left = 0
    top = myCropedTop
    right = width
    bottom = myCropedHeight
    TheBit = Myimage.crop((left, top, right, bottom))
    #increment MyCroped top so the next croped bit start where the previous end
    TheBit.show()
    myCropedTop += Lenght
    #this line here is part of the loop
#this one isn't