Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 19, 2017 19:37:11

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы

привет
можно ли в цикл while вложить цикл for?

 while f<100:
    for f in range(1000):
       print(f)
  if f==100:
  break
ну это просто, что бы понимать о чем речь.
можно ли такое реализовать?

Отредактировано pythonmaks (Авг. 19, 2017 19:38:33)

Офлайн

#2 Авг. 19, 2017 21:34:46

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

циклы

в цикл while можно вложить что угодно главное правильно чтоб не получить бесконечный цикл если это не нужно. и не надо создавать циклически одну и ту же тему. это точно не нужно

Отредактировано marvellik (Авг. 19, 2017 21:35:56)

Офлайн

#3 Авг. 19, 2017 21:54:43

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

циклы

pythonmaks
можно ли в цикл while вложить цикл for?
циклы так не работают, while не проверяет каждый такт процессора состояние переменной f, он проверяет условие только перед началом очередной итерации цикла.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#4 Авг. 19, 2017 22:50:18

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы

marvellik
в цикл while можно вложить что угодно главное правильно чтоб не получить бесконечный цикл если это не нужно. и не надо создавать циклически одну и ту же тему. это точно не нужно

господа, я требую пример
напишите пожалуйста, любой, в котором for вложен в цикл while

Офлайн

#5 Авг. 19, 2017 23:15:03

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

циклы

пример:

 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)

Офлайн

#6 Авг. 19, 2017 23:23:54

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы

не не, вот допустим

 while True:
          for d in range(20):
               print(d)
  if d==15:
      break
   
как остановить цикл while? блок отступа c if нужно отнести к while же? ну тогда почему ошибку выдает среда?

Отредактировано pythonmaks (Авг. 19, 2017 23:24:16)

Офлайн

#7 Авг. 19, 2017 23:42:40

kazaff
От:
Зарегистрирован: 2011-08-12
Сообщения: 26
Репутация: +  2  -
Профиль   Отправить e-mail  

циклы

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()



Офлайн

#8 Авг. 19, 2017 23:44:47

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

циклы

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
>>>



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Авг. 19, 2017 23:48:58)

Офлайн

#9 Авг. 19, 2017 23:51:39

pythonmaks
Зарегистрирован: 2017-07-06
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

циклы

PEHDOM
ошибка потому что отступы нужно соблюдать.. еще раз повторяю “ while не проверяет каждый такт процессора состояние переменной f, он проверяет условие только перед началом очередной итерации цикла.” поэтому когда ты выровняешь отступы, у тебя вайл удет в бесконечный цикл потому что в момент проверки равно ли Д патнядцати, оно равно 19.вот например, в форе каджый раз генерируем случайное число, и если оно совпадет с Д, прерываем все циклы..

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



а куда нужно было бы отнести отступ? если if оставить под for , то блок будет для for а не для while. а break нужен же для цикла while
вот просто если разумно подумать, то как его тут разместить?

Отредактировано pythonmaks (Авг. 19, 2017 23:53:03)

Офлайн

#10 Авг. 19, 2017 23:57:11

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

циклы

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 дойдя ко конца текущего витка цикла сам прерветься.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version