3

Este es mi código, el cual ejecuto en Python 2.7.13:

print "hola"
hiola = input()
if hiola == salsa:
    print "hola"

Y el error que me lanza es el siguiente:

Traceback (most recent call last):
  File "C:\Programacion\Python\hola.py", line 2, in <module>
    hiola = input()
  File "<string>", line 1, in <module>
NameError: name 'salsa' is not defined
FJSevilla
  • 55,603
  • 7
  • 35
  • 58
  • Bienvenido a [es.so], te recomiendo que intentes redactar algo tus preguntas para hacerlas más claras. Por otro lado debes formatear el código adecuadamente, para ello copias tu código en el editor de la pregunta, lo seleccionas y pulsas el botón `{}` del editor, o bién Ctrl+k. Por ser tu primera vez en el sitio he editado tu pregunta lo más adecuadamente que he podido, pero recuerdalo para otras ocasiones. Saludos. – FJSevilla May 17 '17 at 19:36
  • gracias, lo recordare – SENIORofPRESTON 354 May 17 '17 at 20:04

1 Answers1

4

El problema es que estas usando input bajo python 2.7 como se haría en Python 3. input espera código Python válido el cual evalúa, si ingresas hola u otra cadena sin usar comillas ("hola"), interpreta que es un identificador, como una variable, y al no estar definida en el espacio de nombres, lanza la excepción mostrada.

Para hacer lo que quieres en Python 2.x debes usar raw_input que retorna siempre una cadena:

print "hola"
hiola = raw_input()
if hiola == 'salsa':
    print "hola"

Por otro lado no entrecomillas salsa, si es una variable debes definirla antes, por ejemplo:

salsa = 'hola'

si salsa no es una variable y es una cadena literal debes ponerla entre comilla:

if hiola == 'salsa':

Para ver las diferencias entre input y raw_input (y las diferencias al respecto entre Python 3 y Python 2) puedes mirarte esta pregunta:

FJSevilla
  • 55,603
  • 7
  • 35
  • 58
  • ok, ahora pongo. hola = raw_input("cual es la contraseña: ") if hola == 'salsa': print "bienvenido" y me dice. SyntaxError: Non-ASCII character '. on line 1 – SENIORofPRESTON 354 May 17 '17 at 19:56
  • @SENIORofPRESTON354 la 'ñ' no es un carácter ASCII (como las tildes y demás). Python 2.x decodifica el código usando ASCII por defecto, de ahí el problema: añade la línea `# -*- coding: utf-8 -*-` como primera o segunda línea en tu script para especificar la codificación que se debe usar al intérprete y guarda tu .py con codificación utf-8 si es que tu editor no lo hace ya. Si no necesitas usar por fuerza mayor Python 2 usa Python 3 en su lugar, te evitarás muchos de estos problemas. – FJSevilla May 17 '17 at 20:19
  • entonces como pongo la ñ, o no se puede? pd. ya funciono – SENIORofPRESTON 354 May 17 '17 at 23:23
  • @SENIORofPRESTON354, entonces, ¿solucionado? – FJSevilla May 17 '17 at 23:31
  • como puedo poner la 'ñ' – SENIORofPRESTON 354 May 17 '17 at 23:32
  • y como borrar la pantalla? – SENIORofPRESTON 354 May 17 '17 at 23:35
  • Para eso es lo de `# -*- coding: utf-8 -*-` en la primera línea del script. Esto indica al intérprete que debe decodificar el archivo usando utf-8 que si admite la ñ. Simplemente pon tu código con la ñ, añades esta línea como **primera o segunda línea** a tu script y guardas el .py con codificación utf-8. – FJSevilla May 17 '17 at 23:36