Найти - Пользователи
Полная версия: Случайное начало цикла
Начало » Python для новичков » Случайное начало цикла
1
Voroshek
a = random.randint(0, 9)

b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
while 1:
for c in b:
print(c)
Так цикл будет бесконечно возвращать содержимое списка b. Вопрос: как бы сделать так, чтобы обход начинался с индекса “а”? Сиречь, если а == 4, возвращалось: 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7… и т.д.?
Lynx
Во-первых:
Ты нигде не используешь переменную a.
Во-вторых:
Бесконечный цикл у тебя -> будет всегда выводить содержимое b.

Если у тебя в списке только цифры и только так как тут могу предложить это =)
Заметим, что это для конкретного случая. Я уверен, что можно и иначе придумать. Но задачу так поставили…
import random

a = random.randint(0, 9)
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for c in xrange(a+1, len(b)+1):
print c

9
10
-------------------------------------
>>> a
8
Voroshek
Угу. Я конечно нигде не использую переменную “а”. Эту строчку я добавил для ясности мысли, иначе бы мне первым делом посоветовали читать доки про random.
В списке будут изображения, вырезанные методом subsurface() из картинки, загруженной методом pygame.image.load()
Собственно программа - бесконечно (ну, до выхода) вращающийся шар. А вращатся он должен начинать в момент запуска программы со случайно выбранной позиции.
Я подумал, что вся эта хрень не имеет отношения к сути вопроса, поэтому и опустил её.
Андрей Светлов
import itertools
import random

a = random.randint(0, 9)
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in itertools.cycle(b[a:] + b[:a]):
pass
Voroshek
Благодарю. Эх, добавили бы админы смайлик “снимаю шляпу”
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