2015-11-30 2 views
-1

У меня есть цикл, а некоторые если заявления, в которых я пытаюсь напечатать некоторые данные, как так:Как пропустить определенное число с .next()

for i in range(27): 
    if (i >= 0) and (i <= 11): 
     print " value %d = %02X" % (i, data.next()) 
    if (i >= 16) and (i <= 27): 
     print " value %d = %02X" % (i, data.next()) 

Таким образом, первые 12 значения печатаются в порядке, но тогда, когда i = 16 - 27, значение i распечатывается правильно, но часть data.next()) этого не делает. Я не уверен в этом. Есть ли способ сохранить .next() в темпе со значением i?

+3

Почему бы не просто читать и выбросить 'следующий()', если ни одно условие выполнено ? – alexis

+1

Кроме того, не связано с тем, что вы просите, но вы можете сделать '0 <= i <= 11' вместо' (i> = 0) и (i <= 11) ' – Peter

+0

Yup! Некоторое время, с тех пор как я запрограммировал python, я все еще пытаюсь понять, что могу и чего не могу. – pfinferno

ответ

1

Как сказано в alexis, вы можете просто добавить предложение else и вызвать data.next() в нем. Код, вероятно, легче понять, чем мое объяснение.

for i in range(27): 
    if (i >= 0) and (i <= 11): 
     print " value %d = %02X" % (i, data.next()) 
    elif (i >= 16) and (i <= 27): 
     print " value %d = %02X" % (i, data.next()) 
    else: 
     data.next() 

Или так как эти два положения делают то же самое можно было проверить, когда я> 11 и я < 16.

for i in range(27): 
    if (i > 11) and (i < 16): 
     data.next() # keeps data moving forward even when i == 12, 13, 14, 15 
    else: 
     print " value %d = %02X" % (i, data.next()) # only prints when i == 0...11, 16...27 
+0

Хороший звонок. Простое решение, я должен был подумать об этом. Спасибо! – pfinferno

Смежные вопросы