ValueError: пустой диапазон для randrange () (4,1, -3) [duplicate]

Невозможно гарантировать, что две функции будут выполняться синхронно друг с другом, что похоже на то, что вы хотите сделать.

Лучшее, что вы можете сделать, это разделить функцию на несколько шагов, затем подождите, пока оба будут завершены в критических точках синхронизации, используя Process.join, как упоминает ответ @ aix.

Это лучше, чем time.sleep(10), потому что вы не можете гарантировать точное время. При явном ожидании вы говорите, что функции должны выполняться, выполняя этот шаг, прежде чем переходить к следующему, вместо того, чтобы предполагать, что это будет сделано в течение 10 мс, что не гарантируется на основе того, что еще происходит на машине.

10
задан user551717 20 May 2015 в 03:41
поделиться

4 ответа

Вы назвали randint следующим образом:

 randint(1,0)

Это говорит randint, чтобы вернуть значение, начинающееся с 1 и заканчивающееся на 0. Диапазон чисел от 1 до нуля - это то, что вы, несомненно, реализуете пустой диапазон , Следовательно, ошибка:

 empty range for randrange()
15
ответ дан Lennart Regebro 15 August 2018 в 16:04
поделиться
  • 1
    Я знаю, как вы это называете. Я называю это, и это вызывает ошибку, потому что случайный модуль поврежден. – user551717 22 December 2010 в 22:26
  • 2
    @ user551717, тогда вы должны сделать разницу между вашей версией модели и исходным текстом, который я разместил, и посмотреть, что происходит – Rafe Kettler 22 December 2010 в 22:27
  • 3
    @ user551717: Прочтите мой ответ еще раз, пока вы его не поймете. Подсказка: это НЕ, как назвать это. Так вы это называете. И это неправильно. – Lennart Regebro 22 December 2010 в 22:27

Поверьте мне, random работает просто отлично. Вы вызываете randint с b & lt; a:

>>> random.randint(1, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\random.py", line 228, in randint
    return self.randrange(a, b+1)
  File "C:\Python27\lib\random.py", line 204, in randrange
    raise ValueError, "empty range for randrange() (%d,%d, %d)" % (istart, istop
, width)
ValueError: empty range for randrange() (1,1, 0)

randint возвращает значение между первым аргументом и вторым аргументом.

4
ответ дан Katriel 15 August 2018 в 16:04
поделиться
  • 1
    Обратите внимание, что исключение OPs возникает каждый раз, когда b < a – bgporter 22 December 2010 в 22:22
  • 2
    Правильно, но (1,1, 0) есть (a, b + 1, b-a + 1), поэтому в этом случае он назвал его с a = 1 и b = 0. – Lennart Regebro 22 December 2010 в 22:29
  • 3
    хорошо, спасибо. Я забыл добавить человека в список, длина которого до того, как я его назвал. – user551717 22 December 2010 в 22:32
  • 4
    @ user551717: Значит, вы собираетесь выбрать один элемент из списка случайным образом? Уже есть функция для случайного модуля. Пожалуйста, ознакомьтесь с документацией. docs.python.org/library/random.html Также обратите внимание, что если вы добавите ко второму параметру, randint даст вам случайное целое число от 1 до 1. Т.е. оно будет всегда < / i> return 1. – Lennart Regebro 22 December 2010 в 22:35

random.randint(1, 0) возвращает ошибку, потому что всякий раз, когда вы используете random.randint(a, b) a, должно быть меньше b. Попробуйте изменить random.randint(1, 0) на random.randint(0, 1), чтобы получить правильный результат.

Нажмите здесь для получения дополнительной информации о random.randint

0
ответ дан MilkyWay90 15 August 2018 в 16:04
поделиться

Если вы вызвали randint() самостоятельно, это, безусловно, приведет к ошибке. Вы должны предоставить randint() диапазон выбора. randint(a, b), где a и b являются целыми числами, должны работать, а если это не так, ваша установка Python будет нарушена.

Это также вызвало бы исключение, если b меньше, чем a. Подумайте об этом, как будто вы поставляете диапазон: было бы целесообразно сначала поставить нижнюю границу, не так ли? Поэтому сначала поставьте меньшую привязку.

Если вы действительно хотите сравнить ваш модуль random с правильным, источник находится в http://svn.python.org/view/python/branches/release27-maint/ Lib / random.py? вид = разметка

0
ответ дан Rafe Kettler 15 August 2018 в 16:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: