Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 3, 2011 18:55:26

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Случайное начало цикла

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… и т.д.?



python3 openSUSE-43Leap

Офлайн

#2 Авг. 3, 2011 19:47:08

Lynx
От:
Зарегистрирован: 2011-07-02
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Случайное начало цикла

Во-первых:
Ты нигде не используешь переменную 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



Офлайн

#3 Авг. 3, 2011 20:49:54

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Случайное начало цикла

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



python3 openSUSE-43Leap

Отредактировано (Авг. 3, 2011 20:58:34)

Офлайн

#4 Авг. 3, 2011 21:04:54

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Случайное начало цикла

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



Офлайн

#5 Авг. 4, 2011 08:04:11

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Случайное начало цикла

Благодарю. Эх, добавили бы админы смайлик “снимаю шляпу”



python3 openSUSE-43Leap

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version