Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Error con python

Estas en el tema de Error con python en el foro de Python en Foros del Web. Estoy aprendiendo a usa python, y estoy creando un programa muy sencillo, pero al intentar abrirlo, se abre un segundo y se cierra; el programa ...
  #1 (permalink)  
Antiguo 06/02/2013, 07:48
 
Fecha de Ingreso: febrero-2013
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Error con python

Estoy aprendiendo a usa python, y estoy creando un programa muy sencillo, pero al intentar abrirlo, se abre un segundo y se cierra; el programa es el siguiente:

Código Python:
Ver original
  1. nombre=raw_input("como te llamas? ")  #pregunta el nombre
  2. print "ok", nombre
  3. print "ahora te voy a contar una historia"
  4. print "1=si 0=no"
  5. respuesta=input("quieres leerla? ")  #pregunta por historia
  6.  
  7. def gracia(a)  #pregunta por gracia
  8.  if a == 1:
  9.   print "A mi tambien, jajaja"
  10.  elif a == 0:
  11.   print "que poco sentido del humor"
  12.  else:
  13.   a2=input("error, elige si(1) o no(0) ")  #marca error y se llama a si misma con un nuevo dato
  14.   gracia (a2)
  15.  
  16. def chiste(x):  #cuenta chiste o no segun respuesta
  17.  if x == 1:
  18.   print "Van dos y se cae el del medio"
  19.   respuesta_gracia=input("te ha echo gracia? ")  #pregunta por gracia
  20.   gracia (respuesta_gracia)  #llama a funcion gracia
  21.  elif x == 0:
  22.   print "Que poco sentido del humor"
  23.  else:
  24.   x2=input("error, elige si(1) o no(0) ")  #marca error y se llama a si misma con un nuevo dato
  25.   chiste (x2)
  26.  
  27. def historia(n):  #cuenta historia o no segun respuesta
  28.  if n == 1:
  29.   print "Soy un programa, hecho especialmente para ti", nombre, ",espero que te haya gustado"
  30.  elif n == 0:
  31.   print "ok"
  32.   respuesta_chiste=input("quieres leer un chiste? ")  #pregunta por chiste
  33.   chiste(respuesta_chiste)  #llama a funcion chiste
  34.  else:
  35.   n2=input("error, elige si(1) o no(0) ")  #marca error y se llama a si misma con un nuevo dato
  36.   historia (n2)
  37.  
  38. historia (respuesta) #se reproduce la funcion historia segun nuestra respuesta
  39. raw_input()  #espera pulsar tecla intro para cerrar

Después de probar y probar me he dado cuenta que el problema esta en la función gracia, ya que sin esta, el resto del programa se abre y ejecuta perfectamente, pero no consigo encontrar donde esta el fallo. ¿ Alguien puede ayudarme?

Última edición por razpeitia; 06/02/2013 a las 10:30 Razón: resaltado de codigo
  #2 (permalink)  
Antiguo 06/02/2013, 10:26
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Error con python

Usa el resaltado de código del foro, ya que así no podemos ver tu identación del código.

En todo caso parece que estás declarando las funciones, pero nunca las ejecutas.

Saludos
__________________
Grupo Telegram Docker en Español

Última edición por Carlangueitor; 06/02/2013 a las 10:54
  #3 (permalink)  
Antiguo 06/02/2013, 10:52
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Error con python

Olvidaste los dos puntos (:) en la definición de "gracia". Debería ser:

Código Python:
Ver original
  1. def gracia(a):

Por cierto, te recomiendo que uses 4 espacios en lugar de uno.
Por último, que IDE estás usando? O al menos abre el programa desde el command de windows, de otra manera se te hará difícil visualizar los errores.

Espero que te sirva!
  #4 (permalink)  
Antiguo 06/02/2013, 13:52
 
Fecha de Ingreso: febrero-2013
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error con python

Era lo de los dos puntos, que tonteria...
Estoy empezando con python y no me aclaro con que es un IDE y todo eso... lo único que hago es escribir el código en un bloc de notas y luego ejecutarlo, y si quiero probar un fragmento corto de código lo hago con el interprete.
¿Que use cuatro espacios? ¿En donde?
Por cierto, gracias
  #5 (permalink)  
Antiguo 06/02/2013, 13:59
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Error con python

Te recomiendo que dejes el block de notas, por lo menos si quieres mantener salud visual. Puedes usar un editor que te resalte la sintaxis del código y te des cuenta de los errores, recomiendo alguno de estos para empezar si estás en Windows:
  • Sublime Text 2
  • Gedit
  • Geany
  • Notepad ++

En cuanto a lo de los cuatro espacio se refiere a la identación, lo recomendable es usar identado de cuatro espacios, en los editores que te pasé se puede configurar eso de una manera sencilla.

Saludos
__________________
Grupo Telegram Docker en Español
  #6 (permalink)  
Antiguo 06/02/2013, 16:24
 
Fecha de Ingreso: febrero-2013
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error con python

He instalado sublime text 2 y estoy flipando, es muchísimo mas fácil encontrar los fallos, y así todo parece mas ordenado... sin duda es mucho mejor que el bloc de notas.
Gracias de nuevo :D.
  #7 (permalink)  
Antiguo 06/02/2013, 21:30
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Error con python

Ya está todo dicho, pero por si te sirve, yo uso Geany en Windows y me va de 10. Es gratis y de código abierto. Al parecer Sublime Text tiene una versión gratuita por unos días.

Suerte
  #8 (permalink)  
Antiguo 07/02/2013, 10:45
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Error con python

Sublime Text es gratuito todo el tiempo que quieras, solo que te muestra un mensaje de comprarlo cada cierto tiempo
__________________
Grupo Telegram Docker en Español

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.