Форум сайта python.su
привет
можно ли в цикл while вложить цикл for?
while f<100: for f in range(1000): print(f) if f==100: break
Отредактировано pythonmaks (Авг. 19, 2017 19:38:33)
Офлайн
в цикл while можно вложить что угодно главное правильно чтоб не получить бесконечный цикл если это не нужно. и не надо создавать циклически одну и ту же тему. это точно не нужно
Отредактировано marvellik (Авг. 19, 2017 21:35:56)
Офлайн
pythonmaksциклы так не работают, while не проверяет каждый такт процессора состояние переменной f, он проверяет условие только перед началом очередной итерации цикла.
можно ли в цикл while вложить цикл for?
[code python][/code]
Офлайн
marvellik
в цикл while можно вложить что угодно главное правильно чтоб не получить бесконечный цикл если это не нужно. и не надо создавать циклически одну и ту же тему. это точно не нужно
Офлайн
пример:
i = 0 while i < 2: for j in range(3): print('i={}, j={}'.format(i, j)) i+=1 >>> i=0, j=0 i=0, j=1 i=0, j=2 i=1, j=0 i=1, j=1 i=1, j=2 >>>
[code python][/code]
Отредактировано PEHDOM (Авг. 19, 2017 23:15:40)
Офлайн
не не, вот допустим
while True: for d in range(20): print(d) if d==15: break
Отредактировано pythonmaks (Авг. 19, 2017 23:24:16)
Офлайн
pythonmaksОтступы - они не просто так. К тому же вот эти строчки в вашем примере бесполезны:
не не, вот допустим
if d==15: break
def do_it(): while True: for i in range(20): print(i, end=' ') if i == 15: return do_it()
Офлайн
pythonmaksнет конечно, а ошибка потому что отступы нужно соблюдать..
блок отступа c if нужно отнести к while же?
import random while True: for d in range(3): print(d) if d==random.randint(0,3): break else: continue break >>> 0 1 >>> 0 1 2 0 1 2 >>>
[code python][/code]
Отредактировано PEHDOM (Авг. 19, 2017 23:48:58)
Офлайн
PEHDOM
ошибка потому что отступы нужно соблюдать.. еще раз повторяю “ while не проверяет каждый такт процессора состояние переменной f, он проверяет условие только перед началом очередной итерации цикла.” поэтому когда ты выровняешь отступы, у тебя вайл удет в бесконечный цикл потому что в момент проверки равно ли Д патнядцати, оно равно 19.вот например, в форе каджый раз генерируем случайное число, и если оно совпадет с Д, прерываем все циклы..
while True: for d in range(20): print(d) if d==15: break
Отредактировано pythonmaks (Авг. 19, 2017 23:53:03)
Офлайн
pythonmaksпотому что на момент проверки if d==15 d = 19. Тебе нужно при определенном условии прервать и фор и вайл, поєтому нужно или ставить два брейка как в предыдущем примере, или устанафливать флаг выхода из цикла:
а куда нужно было бы отнести отступ? если if оставить под for , то блок будет для for а не для while. а break нужен же для цикла while
вот просто если разумно подумать, то как его тут разместить?
flag = True while flag: for d in range(20): print(d) if d==15: flag = False break
[code python][/code]
Офлайн