Python - ПОКА l oop вложено в цикл FOR - PullRequest
0 голосов
/ 19 июня 2020

Я пытался добиться такого результата:

0;12
1;24
2;36
3;48
4;60

... но я получил это:

0;12
1;12
2;12
3;12
4;12

Вот код:

iter = 0
count = 0
letter = 0
for iter in range(5):
    while letter < len("hello, world"):
        letter+=1
        count+=1
    print("Iteration " + str(iter) + "; count is: " + str(count))

Мне удалось исправить это, добавив count*(iter+1) вместо count в оператор печати, но я пытаюсь понять, почему переменная count сбрасывается каждый раз, когда появляется новое для итерация начинается. Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 19 июня 2020

Здесь происходит то, что вы никогда не устанавливаете letter в 0 после взаимодействия. Таким образом, letter всегда остается на 12.

Печать письма следующим образом:

iter = 0
count = 0
letter = 0
for iter in range(5):
    while letter < 12:
        letter+=1
        count+=1
        print(letter)

Вывод:

1
2
3
4
5
6
7
8
9
10
11
12

После первой итерации while letter остается на 12 и, следовательно, while letter < 12: никогда не запускается, поэтому count никогда не увеличивается.

Обязательно устанавливайте letter на 0 после каждого while l oop:

iter = 0
count = 0
letter = 0
for iter in range(5):
    while letter < 12:
        letter+=1
        count+=1
    letter=0
0 голосов
/ 19 июня 2020

там! это можно исправить, сбрасывая букву на 0 после каждого l oop. While l oop будет запущен только в первый раз, потому что во второй раз буквенное значение увеличивается до 13 и больше не

iter = 0
count = 0
letter = 0
for iter in range(5):
    while letter < len("hello, world"):
        letter+=1
        count+=1
    print("Iteration " + str(iter) + "; count is: " + str(count))
    letter=0
0 голосов
/ 19 июня 2020

letter всегда 13, так как он не инициализируется повторно. Так что пока l oop будет выполняться только один раз. Чтобы исправить это,

count = 0
for iter in range(5):
    letter = 0
    while letter < len("hello, world"):
        letter+=1
        count+=1
    print("Iteration " + str(iter) + "; count is: " + str(count))
...