Найти - Пользователи
Полная версия: циклы
Начало » Python для новичков » циклы
1 2
pythonmaks
привет
можно ли в цикл while вложить цикл for?
 while f<100:
    for f in range(1000):
       print(f)
  if f==100:
  break
ну это просто, что бы понимать о чем речь.
можно ли такое реализовать?
marvellik
в цикл while можно вложить что угодно главное правильно чтоб не получить бесконечный цикл если это не нужно. и не надо создавать циклически одну и ту же тему. это точно не нужно
PEHDOM
pythonmaks
можно ли в цикл while вложить цикл for?
циклы так не работают, while не проверяет каждый такт процессора состояние переменной f, он проверяет условие только перед началом очередной итерации цикла.
pythonmaks
marvellik
в цикл while можно вложить что угодно главное правильно чтоб не получить бесконечный цикл если это не нужно. и не надо создавать циклически одну и ту же тему. это точно не нужно

господа, я требую пример
напишите пожалуйста, любой, в котором for вложен в цикл while
PEHDOM
пример:
 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
>>> 
pythonmaks
не не, вот допустим
 while True:
          for d in range(20):
               print(d)
  if d==15:
      break
   
как остановить цикл while? блок отступа c if нужно отнести к while же? ну тогда почему ошибку выдает среда?
kazaff
pythonmaks
не не, вот допустим
Отступы - они не просто так. К тому же вот эти строчки в вашем примере бесполезны:
   if d==15:
      break
Здесь d никогда не станет равным 15, потому, что когда поток выполнения вернется из for d станет равно 19.
Попробуйте построчно на бумаге пройти все итерации циклов, просто для наглядности.

Вот так можно прервать сразу два цикла, как пример. Еще можно поднять исключение, но это сложнее, чем просто циклы и функции.
 def do_it():
    while True:
        for i in range(20):
            print(i, end=' ')
            if i == 15:
                return
do_it()
PEHDOM
pythonmaks
блок отступа c if нужно отнести к while же?
нет конечно, а ошибка потому что отступы нужно соблюдать..
еще раз повторяю “ while не проверяет каждый такт процессора состояние переменной f, он проверяет условие только перед началом очередной итерации цикла.” поэтому когда ты выровняешь отступы, у тебя вайл удет в бесконечный цикл потому что в момент проверки равно ли Д патнядцати, оно равно 19.
вот например, в форе каджый раз генерируем случайное число, и если оно совпадет с Д, прерываем все циклы..
 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
>>>
pythonmaks
PEHDOM
ошибка потому что отступы нужно соблюдать.. еще раз повторяю “ while не проверяет каждый такт процессора состояние переменной f, он проверяет условие только перед началом очередной итерации цикла.” поэтому когда ты выровняешь отступы, у тебя вайл удет в бесконечный цикл потому что в момент проверки равно ли Д патнядцати, оно равно 19.вот например, в форе каджый раз генерируем случайное число, и если оно совпадет с Д, прерываем все циклы..

 while True:
          for d in range(20):
               print(d)
  if d==15:
      break



а куда нужно было бы отнести отступ? если if оставить под for , то блок будет для for а не для while. а break нужен же для цикла while
вот просто если разумно подумать, то как его тут разместить?
PEHDOM
pythonmaks
а куда нужно было бы отнести отступ? если if оставить под for , то блок будет для for а не для while. а break нужен же для цикла while
вот просто если разумно подумать, то как его тут разместить?
потому что на момент проверки if d==15 d = 19. Тебе нужно при определенном условии прервать и фор и вайл, поєтому нужно или ставить два брейка как в предыдущем примере, или устанафливать флаг выхода из цикла:
 flag = True
while flag:
    for d in range(20):
        print(d)
        if d==15:
            flag = False
            break
когда флаг станет False while дойдя ко конца текущего витка цикла сам прерветься.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB