2013-08-15 2 views
0

У меня есть один массив 'barray' размером 'bsize' и еще один 'carray' размером 'csize'. Цикл i предназначен для барри и j Петля для каре.Ошибка i не определена в цикле for с использованием python

Я получаю сообщение об ошибке i, которое не определено. Я хочу, чтобы циклы проходили от 0 до bsize - 2 с шагом 3 и от 0 до csize - 2 за один шаг.

Как связать размер и массив с циклом for?

bsize = 960 
csize = 960 
barray = bytearray(fi.read()) 
carray= bytearray(f1.read()) 



for i in range (bsize-2,i+3): 
    for j in range (csize-2,j+1): 
+0

Итак, что именно вы хотите 'i' быть в первом цикле? 0 до 'bsize - 2'? 'bsize - 2' на что-то? – vroomfondel

+0

Я хочу, чтобы я взял barray от 0 до bsize-2 и увеличил на 3 и j, чтобы взять carray от 0 до csize-2 и увеличить на 1 – user2628659

ответ

4
for i in range (0, bsize - 2, 3): #possibly bsize - 1? 
    for j in range (csize - 2): # possibly csize - 1? 
     #do your thing 

Это будет цикл по первому увеличивающимся i по 3 каждый раз, и j на 1.

Посмотрите на эту tutorial или эти docs узнать range, это очень полезно!

Я не уверен, если вы хотите пройти через bsize - 2 или просто до него. Если до конца использовать размер - 1 для получения размера - 2.

Причина, по которой вы получаете сообщение об ошибке, состоит в том, что вы не определили i, который вы используете на этом шаге. Как вы можете видеть, python's range не похож на множество конструкций других языков for. Как только вы привыкнете к этому, он очень гибкий и прост в использовании.

Некоторые примеры использования простой выбор:

>>> for i in range(0, 14, 3): 
... print i 
... 
0 
3 
6 
9 
12 

>>> for i in range(1, 5): 
...  print i 
... 
1 
2 
3 
4 

>>> for i in range(5): 
...  print i 
... 
0 
1 
2 
3 
4