как запустить два цикла while внутри цикла while - PullRequest
0 голосов
/ 07 июня 2018
interval_sec = 15.0
t_end = time.time() + interval_sec
episode = 0
while True:

    while episode < 3:
        print('Episode %s' % episode)
        episode += 1

    while time.time() < t_end:           
        print("hi")

Я все перепробовал.Я попытался использовать цикл for (для эпизода в диапазоне (0,3)), удаляя эпизод var и даже определяя

while episode < 3:
    print('Episode %s' % episode)
    episode += 1

как функцию в цикле.

Ожидаемыйвывод, который я пытаюсь получить в псевдокоде:

первый вложенный цикл while (в то время как эпизод <3 :) выводит </p>

Episode 0
Episode 1
Episode 2

, затем второй вложенный цикл цикл выводит«Привет» в течение 15 секунд

, а затем первый вложенный цикл while должен распечатать

Episode 0
Episode 1
Episode 2

, а затем снова «Привет» в течение 15 секунд и так далее.Он должен повторять этот процесс навсегда (следовательно, цикл while: True).

Ищите исправление, которое я не пробовал.Высоко ценится

1 Ответ

0 голосов
/ 07 июня 2018

Ваша логика подсчета для первого цикла неверна.Рассматривает основные части инициализации, тестирования и приращения:

episode = 0
while episode < 3:
    ...
    episode += 1

Это формирует базовый счетный цикл.Проблема в том, что вы разделили части, поместив их в разные логические блоки:

episode = 0
while True:       # This is fatal to your counting loop's operation
    while episode < 3:
        ...
        episode += 1

Python предоставляет вам инструменты, которые помогут с этим.Оператор for дает вам счетный цикл в одном удобном пакете:

for episode in range(3):
    ....

Теперь тривиально объединять части цикла.

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

...