2010-11-14 16 views
12

Tôi có một số mã mà trông giống như sau:lỗi random.randint

import random 

n = 0 
while n <= 50: 
    n = n+1 
    a = random.randint(1, 16) 
    b = random.randint(1, 5) 
    print n, ". ", a, "-", b, "= " 

Đối với một số lý do, khi chạy nó, tôi nhận được lỗi sau: AttributeError: 'module' object has no attribute 'randint'. Tuy nhiên, tôi không có vấn đề gì khi chạy cùng một truy vấn random.randint trong IDLE. Làm thế nào tôi có thể sửa lỗi này?

Trả lời

27

Bạn có một mô-đun khác được gọi là "ngẫu nhiên" ở đâu đó. Bạn đã đặt tên cho tập lệnh "random.py" chưa?

+0

Tôi đoán - có :) – khachik

+0

Cảm ơn! Chỉ muốn thêm vào điều này - trong trường hợp của tôi, tôi đã có một chức năng có tên ngẫu nhiên (Những gì tôi nhận được để các đối tác của tôi gửi cho tôi phần mã của họ, lol) –

2

Mã hoạt động tốt đối với tôi, vì vậy bạn phải có mô-đun khác được gọi là "ngẫu nhiên" trên PYTHONPATH của bạn

Thử dir (ngẫu nhiên) để xem những gì trong đó. Điều này có thể làm cho nó dễ dàng hơn để nhớ lý do tại sao bạn có một mô-đun được đặt tên ngẫu nhiên và nó ở đâu.

4

Kiểm tra tên tệp của bạn! Trong trường hợp của bạn "ngẫu nhiên" là từ khóa, bạn không thể sử dụng "ngẫu nhiên" như một tên tập tin. Cẩn thận rằng không có tệp nào được đặt tên là random.py.

2

Nếu tên tệp bạn đang làm việc hoặc tệp khác trong dự án của bạn có tên "random.py", chương trình của bạn sẽ tìm hàm randint ở vị trí đó và không thể tìm thấy nó.

Bạn nên thay đổi bất kỳ tên tệp random.py thành tên khác. Sau đó, "nhập ngẫu nhiên" sẽ phân giải thành mô-đun random.py "thực tế" và bạn sẽ sử dụng thành công randint hoặc bất kỳ chức năng nào khác trong mô-đun.