2015-01-27 4 views
-3

Что такое мыслительный процесс при оценке цикла? Я действительно не знаю, как оболочка получает эти ответы (A: 12, B: 2, C: 4, D: 6).Как вы читаете петли?

A, B, C, D = 0, 0, 0, 0 

while A <= 10: 
    A += 2 
    if A%3 == 0: 
     B += 1 
    else: 
     C += 1 
    D += 1 
+0

Прежде всего вам нужно знать, каковы начальные значения переменных, которые не указаны в вашем фрагменте. –

+0

Возможно, вы захотите проверить свое сообщение в панели предварительного просмотра, вместо того чтобы закрыть глаза и нажать «Отправить». – usr2564301

+0

Кроме того, пожалуйста, повторно введите свой код. Отступы * чрезвычайно важны для понимания структуры управления python. –

ответ

1

Тело цикла while будет выполняться 6 раз (для A=0,2,4,6,8,10).

  • На каждой итерации, A увеличивается на 2, так что после первого оператора внутри цикла имеет значения 2,4,6,8,10,12.
  • B прирастает один раз (если A=6 и A=12);
  • C увеличивается на единицу для остальных значений A.
  • D увеличивается каждый раз по кругу.

Следовательно, после того, как петли, A=12, B=2, C=4 и D=6.

3

Может быть, вы можете прочитать его более легко, если вы нарушите его вниз:

A = 0 

while A <= 10: 
    A += 2 

Вы можете прочитать это? Вы понимаете, как это получается до 12?

A, D = 0, 0 

while A <= 10: 
    A += 2 
    D += 1 

Также в том числе D не должны сделать это тяжелее.

Можете ли вы прочитать и понять, что само по себе является? if?

if A%3 == 0: 
    B += 1 
else: 
    C += 1 

Как насчет того, когда он находится внутри цикла?

A, B, C, D = 0, 0, 0, 0 

while A <= 10: 
    A += 2 
    if A%3 == 0: 
     B += 1 
    else: 
     C += 1 
    D += 1 

B и C связаны; ровно один из них увеличивается на каждой итерации, поэтому они должны совпадать с D, что и у них.

У вас возникли какие-либо проблемы с чтением и пониманием этого сейчас? :)

2

Другие ответы являются хорошими. Я очень рекомендую пройти через вещи с ручкой и бумагой, чтобы убедиться, что вы понимаете, что происходит.

Использование print внутри цикла также полезно, чтобы увидеть, что происходит во время вашей программы.

A,B,C,D = 0,0,0,0 

while A <= 10: 
    A += 2 
    if A%3 == 0: 
     B += 1 
    else: 
     C += 1 
    D += 1 
    print "A =", A, " B =", B, " C =", C, " D =", D 

Выход показывает значения A, B, C, D в конце каждой итерации цикла.

A = 2 B = 0 C = 1 D = 1 
A = 4 B = 0 C = 2 D = 2 
A = 6 B = 1 C = 2 D = 3 
A = 8 B = 1 C = 3 D = 4 
A = 10 B = 1 C = 4 D = 5 
A = 12 B = 2 C = 4 D = 6 

Вы можете видеть, что:

  • A получает приращение на 2 каждый цикл итерации
  • B инкрементируется на 1IFA делится на 3, что A%3 == 0
  • C увеличивается на 1IFA является НЕ делится на 3
  • D получает увеличивается на 1 каждый итерации цикла

Когда дело доходит до петли, вы можете думать о сборе отступом кода в виде одного «куска» кода, который запускается один раз для каждого повторения цикла. Формальный термин для этого фрагмента кода - block. Он также применяется к заявлениям if/else.

+0

Это сделало его очень ясным! Спасибо, я понимаю это сейчас – Nino

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