2010-12-22 15 views
8

En Python 2.7.1, Importe el módulo aleatorio. cuando llamo randint() Sin embargo, me sale el error:El módulo aleatorio no funciona. ValueError: intervalo vacío para randrange() (1,1, 0)

ValueError: empty range for randrange() (1,1, 0) 

Este error es causado por un error en el módulo random.py sí. No sé cómo solucionarlo, no reinstalar la ayuda de Python. No puedo cambiar versiones

¿alguien puede darme el código de un módulo de trabajo o decirme qué hacer?

+0

¿Se puede publicar el código completo y exacto que produce este error? –

+1

Consejo profesional: El hecho de que el módulo 'random' esté en la parte inferior de la pila stacktrace, no tiene que haber causado el error (de hecho, es poco probable). Como ya se dijo, publique su código (incluyendo stacktrace). – delnan

+2

No afirme que el módulo no funciona antes de leer la documentación. –

Respuesta

12

Usted llamó randint así:

randint(1,0) 

Eso dice randint para devolver un valor de partida como 1 y termina en 0. El rango de números de 1 a cero es como seguramente se da cuenta de un rango vacío. De ahí el error:

empty range for randrange() 
+0

I Sé que así es como lo llamas. Lo llamo y arroja un error porque el módulo aleatorio está dañado. – user551717

+0

@ user551717 luego debe hacer una diferencia entre su versión del modelo y la fuente que publiqué y ver qué ocurre –

+9

@ user551717: Lea mi respuesta nuevamente, hasta que lo comprenda. Sugerencia: NO es cómo llamarlo. Así es como lo llamaste. Y está mal. –

4

Confíe en mí, random funciona bien. Que está llamando randint con b < 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 devuelve un valor entre el primer argumento y el segundo argumento.

+0

Tenga en cuenta que la excepción OPs se produce siempre que 'b bgporter

+0

Right, pero (1,1, 0) es (a, b + 1, b-a + 1), por lo que en este caso lo llamó con a = 1 y b = 0. –

+0

bien, gracias. Olvidé agregar a una persona a la lista cuya longitud es una antes de que lo llamara. – user551717

0

Si llamaste al randint() por su cuenta, definitivamente generará un error. Debe proporcionar randint() con un rango para elegir. randint(a, b), donde ayb son enteros, deberían funcionar, y si no es así, la instalación de Python está interrumpida.

También generaría una excepción si b es menor que a. Piensa que es como si estuvieras suministrando un rango: tendría sentido poner el límite inferior primero, ¿verdad? Así que pon el límite más pequeño primero.

Si realmente quiere comparar su módulo de random con la correcta, la fuente está en http://svn.python.org/view/python/branches/release27-maint/Lib/random.py?view=markup

Cuestiones relacionadas