2010-04-10 17 views
9

estoy aprendiendo Python y tienen este error. Puedo averiguar dónde \ cuál es el error en el código. File "<string>", line 1, in <module>.error en python d no definido.

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

cuando corro el programa

emite ¿Cuál es su nombre? (Entrada d i)

esto da el error

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 

Este es un ejemplo de código de Python 3 para principiantes absolutos.

Respuesta

17

En Python 2.x, input() espera algo que es una expresión de Python, lo que significa que si escribe d que interpreta como una variable de llamado d. Si escribió "d", estaría bien.

Lo que probablemente realmente desea para 2.x es raw_input(), que devuelve el valor introducido como una cadena de texto en lugar de evaluarla.

Dado que está obteniendo este comportamiento, parece que está utilizando una versión 2.x del intérprete de Python; en su lugar, iría al www.python.org y descargaría un intérprete de Python 3.x para que coincida con el libro que estás usando

1

En Python 3.0 y superior, que el libro que está utilizando enseña, input() hace lo que raw_input() hizo en Python 2, por lo que en ese caso el código sería correcto; sin embargo, parece que estás usando una versión anterior de Python (¿2.6?).

Recomendaría ir al Python website y descargar la última versión de Python 3 en su lugar, para que le resulte más fácil seguir el libro.


El problema inmediato, dado que usted está utilizando Python 2, es que estás usando input(), que evalúa lo que le des. Lo que se quiere hacer es obtener la cadena de texto en que la entrada del usuario:

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

Hay un montón de pequeñas diferencias entre Python 3.x y 2.x, por lo que definitivamente va obtener la última Python 3 si quieres seguir usando Python 3 para principiantes absolutos.

3

Probablemente esté utilizando Python 2.x, donde input será eval la entrada del usuario. Solo en Python 3.x input() devuelve la entrada de usuario sin procesar.

Puede comprobar la versión de Python ejecutando python en la consola, por ejemplo, esto es 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. 
>>> 

Puede ejecutar una versión específica de Python (por ejemplo 3,1) por 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

Hola kennyTM muchas gracias! yup se ve como un conflicto de versiones :( Python 2.6.4 (r264: 75706, 7 de diciembre de 2009, 18:45:15) [GCC 4.4.1] en linux2 actualizará mi versión de python. Nunca lo hubiera averiguado sin ustedes gracias de nuevo :) – dtechie

Cuestiones relacionadas