2011-01-21 23 views
7

Ho iniziato a imparare Python. Ho scritto un programma molto semplice.perché questo programma python non funziona?

#!/usr/bin/env python 
import random 
x = random.uniform(-1, 1) 
print str(x) 

Eseguo questo dal prompt dei comandi.

python random.py 

tornò con l'errore:

Traceback (most recent call last): 
    File "random.py", line 2, in <module> 
    import random 
    File "D:\python practise\random.py", line 3, in <module> 
    x = random.uniform(-1, 1) 
AttributeError: 'module' object has no attribute 'uniform' 

Si tratta di un programma molto semplice, non riesco a capire quello che errore ho fatto in questo. Qualcuno può aiutarmi? Grazie in anticipo. (sistema operativo: windows 7; versione python: 2.7)

+6

3 voti sul serio? – user225312

+1

Su windows la sintassi dello shebang '#! Usr/bin/env python' non è necessaria; non fa assolutamente niente. Questo è per i SO di tipo Unix in modo che la shell possa sapere come eseguire lo script –

+3

@Rafe, inoltre non fa male e perché presupporre che verrà sempre eseguito in un ambiente non Unixico? –

risposta

24

Non nominare il file random.py, si sta importando da solo e sta cercando uniform in esso.

È un po 'strano con il modo in cui Python importa le cose, prima cerca nella directory locale e poi inizia a cercare il PYTHONPATH. In pratica, fai attenzione a nominare uno qualsiasi dei tuoi file .py lo stesso di uno dei moduli di libreria standard.

+0

Grazie, ho capito. – narayanpatra

+1

se tale risposta è stata utile, contrassegnarla come accettata. – anijhaw

2

Il tuo problema è che hai chiamato il tuo programma di test "random.py". La directory di lavoro corrente si trova sul percorso di ricerca del modulo prima di ogni altra cosa, quindi quando si dice "import random", importa il proprio programma di test piuttosto che la libreria standard casuale.

Rinominare il programma di test o semplicemente rimuovere il suffisso .py e dovrebbe funzionare.

4

Non nominare il programma come libreria. E proprio come un suggerimento: non hai bisogno di una stringa che memorizza qualcosa e la stampa solo dopo averla generata.

#!/usr/bin/env python 
import random 
print(random.uniform(-1, 1)) 

Questo funziona bene anche;)

1

La soluzione al tuo problema è rinominare il file (random.py) a qualcosa di diverso Python built-in, librerie standard, parole chiave riservate ecc

Tuttavia

I ti consigliamo vivamente di prendere Python Tutorial, prima di provare qualsiasi altro tutorial o libro. Hai particolarmente bisogno di saperne di più su Python scopes and namespaces.

Problemi correlati