2008-09-16 13 views

Odpowiedz

34

Prawdopodobnie masz plik o nazwie random.py lub random.pyc w katalogu roboczym. To jest cień wbudowanego modułu losowego. Musisz zmienić nazwę random.py na coś podobnego do my_random.py i/lub usunąć plik random.pyc.

Aby powiedzieć na pewno, co się dzieje, to zrobić:

>>> import random 
>>> print random.__file__ 

To pokaże Ci dokładnie, który plik jest importowany.

+0

W powłoce Python 3.3.2 muszę pominąć 'print', aby uzyskać ścieżkę do pliku. – Tony

+1

@ Tony w Pythonie 3, 'print' jest funkcją. Więc możesz napisać 'print (losowy plik .__ __)'. – Zenadix

2

Myślę, że trzeba podać trochę więcej informacji. Nie można odpowiedzieć, dlaczego nie działa w oparciu o informacje w pytaniu. Podstawowa dokumentacja dotycząca losowania znajduje się pod adresem: https://docs.python.org/library/random.html

Możesz tam sprawdzić.

0

Czy możesz podać przykład tego, co próbujesz zrobić? Z twojego pytania nie wynika jednoznacznie, jaki jest faktyczny problem.

Oto przykład, w jaki sposób korzystać z modułu losowe:

import random 
print random.randint(0,10) 
1
Python 2.5.2 (r252:60911, Jun 16 2008, 18:27:58) 
[GCC 3.3.4 (pre 3.3.5 20040809)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import random 
>>> random.seed() 
>>> dir(random) 
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_acos', '_ceil', '_cos', '_e', '_exp', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'uniform', 'vonmisesvariate', 'weibullvariate'] 
>>> random.randint(0,3) 
3 
>>> random.randint(0,3) 
1 
>>> 
0

wydaje się działać dobrze dla mnie. Sprawdź metod w official python documentation dla przypadkowy:

>>> import random 
>>> random.random() 
0.69130806168332215 
>>> random.uniform(1, 10) 
8.8384170917436293 
>>> random.randint(1, 10) 
4 
0

działa na mnie:

Python 2.5.1 (r251:54863, Jun 15 2008, 18:24:51) 
[GCC 4.3.0 20080428 (Red Hat 4.3.0-8)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import random 
>>> brothers = ['larry', 'curly', 'moe'] 
>>> random.choice(brothers) 
'moe' 
>>> random.choice(brothers) 
'curly' 
1

Czy to możliwe, że uruchamiany skrypt nazywa się sam losowo?

3

Dzieje się tak, ponieważ w ścieżce wyszukiwania python znajduje się plik random.py, najprawdopodobniej katalog bieżący.

Python szuka modułów za pomocą sys.path, który zwykle zawiera katalog bieżący przed standardowymi pakietami site, które zawierają oczekiwany los.py.

To powinno zostać naprawione w Pythonie 3.0, aby nie można było importować modułów z bieżącego katalogu bez użycia specjalnej składni importu.

Po prostu usuń random.py + random.pyc z katalogu, w którym używasz Pythona, i wszystko będzie działać poprawnie.