пробегая цикл и находя условие, которое соответствует - PullRequest
0 голосов
/ 24 марта 2012

Я ищу ответ на эту проблему:
Я выполняю циклическое тестирование для условия каждый раз (если data[i] - красный), и когда значение массива - красный, я печатаючто-то, но если следующее значение (data[i+1]) не красное, я хочу напечатать что-то еще до конца строки, не проверяя, является ли следующая точка красной или нет.Поэтому мой код выглядел примерно так:

For i in range (0, 64) :
If data[i] = red :
Print '#'
If data[i+1] != red :
#here i want to print '.' for the rest of the line without testing anything and getting out of the loop
Else : 
print '#'
Else :
print '.'

И я не знаю, что поставить, чтобы этот код работал.

Например, если в моем массиве есть:данные [i] = красный, данные [i + 1] = пусто, данные [i + 2] = красный.Я хочу удалить второй красный.Я хочу напечатать остальную часть массива пустым, без проверки, если он красный после пробела.Я собираюсь использовать алгоритм в обработке изображений.У меня есть два мяча, один слева и один справа.Этот алгоритм полностью удалит справа.

Ответы [ 2 ]

0 голосов
/ 24 марта 2012

Печать '#', если red, иначе печать '.'.Если встроенная последовательность red, а не red, выведите '.' для остальной части массива:

prev = None
it = iter(data)
for point in it:
    if point == 'red':
       print '#',
    else:
       print '.',
       if prev == 'red': # encounted ['red', 'blank']
          break
    prev = point

for point in it:
    print '.',
print

Пример

blank blank red red blank red blank red red
. . # # . . . . .
0 голосов
/ 24 марта 2012

Вы пытаетесь это сделать:

data = ['red','','', 'red','red','red','red','', 'red','red','','']

for i in xrange(len(data)):
    try:
        if data[i] == 'red' and data[i+1] == 'red':
            print '#',
        elif data[i] == 'red' and data[i+1] != 'red' :
            print '.',
    except IndexError:
        pass

ouput:
. # # # . # .
...