2011-01-21 58 views
7

Tôi đã bắt đầu học python. Tôi đã viết một chương trình rất đơn giản.lý do tại sao chương trình python này không hoạt động?

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

Tôi chạy lệnh này từ dấu nhắc lệnh.

python random.py 

Nó trở lại với lỗi:

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' 

Nó là một chương trình rất đơn giản, tôi không thể hiểu được những gì sai lầm tôi đã làm trong này. Ai có thể giúp tôi trong việc này? Cảm ơn trước. (hệ điều hành: windows 7; python phiên bản: 2.7)

+6

3 phiếu bình chọn? – user225312

+1

Trên cửa sổ cú pháp shebang '#! Usr/bin/env python' là không cần thiết; nó hoàn toàn không có gì. Đó là cho hệ điều hành giống như Unix để vỏ có thể biết làm thế nào để chạy kịch bản –

+3

@Rafe nó cũng không làm tổn thương và lý do tại sao giả sử nó sẽ luôn luôn chạy trong một môi trường không Unixy? –

Trả lời

24

Không đặt tên tệp của bạn random.py, nó đang tự nhập và tìm kiếm uniform trong đó.

Đó là một chút của một sự gian lận với cách Python nhập khẩu mọi thứ, nó trông trong thư mục địa phương đầu tiên và sau đó bắt đầu tìm kiếm PYTHONPATH. Về cơ bản, hãy cẩn thận đặt tên bất kỳ tệp nào trong số các tệp .py của bạn giống như một trong các mô-đun thư viện chuẩn.

+0

Cảm ơn, tôi hiểu. – narayanpatra

+1

nếu câu trả lời đó hữu ích, vui lòng đánh dấu câu trả lời là đã được chấp nhận. – anijhaw

2

Vấn đề của bạn là bạn đã đặt tên cho chương trình thử nghiệm là "random.py". Thư mục làm việc hiện tại nằm trên đường dẫn tìm kiếm mô-đun trước bất kỳ thứ gì khác, vì vậy khi bạn nói "nhập ngẫu nhiên", nó nhập chương trình thử nghiệm của riêng bạn thay vì ngẫu nhiên thư viện chuẩn.

Đổi tên chương trình thử nghiệm của bạn - hoặc chỉ cần xóa hậu tố .py - và nó sẽ hoạt động.

4

Không đặt tên cho chương trình của bạn là Thư viện. Và cũng giống như một Mẹo: Bạn không cần một String lưu trữ một cái gì đó và in nó ra chỉ sau khi tạo ra nó.

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

này sẽ làm việc tốt quá;)

1

Giải pháp cho vấn đề của bạn được đổi tên tập tin của bạn (random.py) một cái gì đó khác hơn là Python built-in, các thư viện chuẩn, từ khóa reserved, vv

Tuy nhiên tôi khuyên bạn nên thực hiện Python Tutorial, trước khi thử bất kỳ hướng dẫn hoặc cuốn sách nào khác. Bạn đặc biệt cần tìm hiểu thêm về Python scopes and namespaces.

Các vấn đề liên quan