LINUX.ORG.RU

Магическая проблема с циклом

 ,


0

1

Добрый день, есть такой код:

	while accountcount < accmax:
		account_to_speak.append(listaccsql[randrange(int(accmax))])
		print account_to_speak
		accountcount = accountcount + 1
accountcount равно нулю, accmax - равно одному(или двум, без разницы).

В listaccsql содержатся юзернеймы. Но это не важно. Цикл должен случайно подбирать эти юзернеймы из допустимого диапазона, но когда запускается этот кусок кода в скрипте, то бесконечно выводится один кусок листа. В чём может быть проблема? Прошу прощений за скомканность текста, если что - пишите. И я что-то уже совсем потерял соль.

account_to_speak.append(listaccsql[randrange(int(accmax))])

Так верстают только... выделяющиеся из серой массы личности.

Siado ★★★★★
()
Ответ на: комментарий от blablacon

Я не сразу понял, в чем твоя ошибка. Думал в том, что выводится _один_и_тот_же_ лист, а у тебя, видимо, проблема в том, что _бесконечно_. Тогда в приведенном тобой куске я ошибки зацикливания не вижу. Наверное, ты со значениями переменных наврал.

anonymous
()
Ответ на: комментарий от blablacon

В чём именно ошибка?
один кусок листа
accmax - равно одному

запусти в интерпретаторе

for _ in range(1000):
    print(randrange(1))

и тогда сам поймёшь

Dred ★★★★★
()
Ответ на: комментарий от Dred

бесконечно выводится один кусок листа

У него тут сразу две ошибки, похоже =)

anonymous
()
Ответ на: комментарий от anonymous

Да, именно, бесконечно.

accmax берётся из конфига с помощью Configparser, без функции int - randrange ругался на подставление переменной. accmax в конфиге равен одному, допустим. Перед циклом стоит такой код:

accountcount = 0
account_to_speak = []

То есть значения переменных такие, как я говорил. Переписываю участок кода в просто bpython, например - всё работает.

blablacon
() автор топика
Ответ на: комментарий от blablacon

Во-первых:

Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:24:06) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from random import *
>>> account_to_speak = []
>>> listaccsql = [11, 12, 13, 14, 15, 16]
>>> accountcount = 0
>>> accmax = 1
>>> while accountcount < accmax:
...     account_to_speak.append(listaccsql[randrange(int(accmax))])
...     print(account_to_speak)
...     accountcount = accountcount + 1
...
[11]
все, ок. Т.е. трабла в коде, который ты не показываешь.
Во-вторых, тебе уже два человека сказали про randrange(1) - он всегда будет выводить одно и то же значение.

anonymous
()
Ответ на: комментарий от anonymous

Хм. Ок, спасибо, буду думать, в чём может быть проблема.

blablacon
() автор топика

Блджат, всё понял, всем спасибо. :))

blablacon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.