2010-04-10 36 views
9

Tôi đang học python và có lỗi này. Tôi có thể tìm ra nơi \ những gì là lỗi trong mã. File "<string>", line 1, in <module>.lỗi trong python d không được xác định.

Name = "" 
Desc = "" 
Gender = "" 
Race = "" 
# Prompt user for user-defined information 
Name = input('What is your Name? ') 
Desc = input('Describe yourself: ') 

Khi tôi chạy chương trình

nó ra Tên của bạn là gì? (I đầu vào d)

này cung cấp cho các lỗi

Traceback (most recent call last): 
    File "/python/chargen.py", line 19, in <module> 
    Name = input('What is your Name? ') 
    File "<string>", line 1, in <module> 
NameError: name 'd' is not defined 

Đây là một ví dụ mã từ Python 3 cho người mới bắt đầu tuyệt đối.

Trả lời

17

Trong Python 2.x, input() hy vọng một cái gì đó mà là một biểu hiện Python, có nghĩa là nếu bạn gõ d nó diễn giải đó như là một biến tên d. Nếu bạn đã nhập "d" thì sẽ ổn thôi.

Điều bạn thực sự muốn cho 2.x là raw_input(), trả về giá trị đã nhập dưới dạng chuỗi thô thay vì đánh giá nó.

Vì bạn đang nhận được hành vi này, có vẻ như bạn đang sử dụng phiên bản 2.x của trình thông dịch Python - thay vào đó, tôi truy cập www.python.org và tải xuống trình thông dịch Python 3.x để nó khớp với cuốn sách bạn đang sử dụng.

1

Trong Python 3.0 trở lên, sách bạn đang sử dụng dạy, input() thực hiện những gì raw_input() đã làm trong Python 2, vì vậy trong trường hợp đó mã sẽ chính xác; tuy nhiên, có vẻ như bạn đang sử dụng phiên bản cũ hơn của Python (2.6?).

Tôi khuyên bạn nên chuyển đến Python website và tải xuống phiên bản mới nhất của Python 3 để thay thế, vì vậy bạn có thời gian dễ dàng hơn sau sách.


Vấn đề trước mắt, cho rằng bạn đang sử dụng Python 2, là bạn đang sử dụng input(), mà đánh giá bất cứ điều gì bạn cho nó. Những gì bạn muốn làm là có được chuỗi nguyên mà người dùng nhập vào:

Name = raw_input("What is your Name? ") 

Có rất nhiều sự khác biệt nhỏ giữa Python 3.x và 2.x, vì vậy chắc chắn đi lấy Python mới nhất 3 nếu bạn muốn tiếp tục sử dụng Python 3 cho người mới bắt đầu tuyệt đối.

3

Có thể bạn đang sử dụng Python 2.x, trong đó input sẽ eval thông tin nhập của người dùng. Chỉ trong Python 3.x input() trả về đầu vào của người dùng thô.

Bạn có thể kiểm tra phiên bản Python bằng cách chạy python trong bảng điều khiển, ví dụ: đây là Python 2.6:

~$ python 
Python 2.6.5 (r265:79063, Apr 5 2010, 00:18:33) 
[GCC 4.2.1 (Apple Inc. build 5659)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 

Bạn có thể chạy một phiên bản cụ thể của Python (ví dụ 3.1) bởi python3.1:

~$ python3.1 
Python 3.1.1 (r311:74480, Jan 25 2010, 15:23:53) 
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 
+0

Hi kennyTM thanks a lot! yup có vẻ như xung đột phiên bản: ( Python 2.6.4 (r264: 75706, ngày 7 tháng 12 năm 2009, 18:45:15) [GCC 4.4.1] trên linux2 sẽ nâng cấp phiên bản python của tôi. Tôi sẽ không bao giờ nghĩ ra được nếu không có các bạn một lần nữa :) – dtechie

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