Foros del Web » Programando para Internet » Python »

Duda simple

Estas en el tema de Duda simple en el foro de Python en Foros del Web. Hola, estoy tratando de asimilar la sintaxis de Python, ya que vengo de C/C++ y tengo una duda, quiero que segun el valor de un ...
  #1 (permalink)  
Antiguo 20/12/2011, 10:32
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 8 meses
Puntos: 11
Pregunta Duda simple

Hola, estoy tratando de asimilar la sintaxis de Python, ya que vengo de C/C++ y tengo una duda, quiero que segun el valor de un número me muestre un mensaje, lo he hecho de una manera pero el juez online de una web de retos me lo echa para atras.
La función en cuestión es esta:
Código Python:
Ver original
  1. def nota(numero):
  2.     numero = int(numero)
  3.     print "suspenso" if (numero < 14) else ("aprobado" if (numero < 16) else ("notable" if (numero < 18) else ("sobresaliente" if (numero != 20) else ("matricula de honor"))))
Acaso es que no se pueden anidar condiciones en python?
Gracias por sus respuestas.
  #2 (permalink)  
Antiguo 20/12/2011, 11:00
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: Duda simple

Sí, sí se pueden hacer condiciones anidadas, pero tu sintaxis está mal: http://miprogramacionenjuegos.wordpr...lif-en-python/

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 20/12/2011, 11:06
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 8 meses
Puntos: 11
Respuesta: Duda simple

Sé que se puede hacer así, pero es que estaba intentando hacer todo eso es una sola linea xD
Pensé que como la sintaxis es:
A if B else C
Se podría hacer:
A if B else (C if D else(E if G else H ...)))

Gracias por contestar!
  #4 (permalink)  
Antiguo 20/12/2011, 11:52
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Duda simple

Bueno estoy en python 2.7 y a mi si me funciona

Código Python:
Ver original
  1. def nota(numero):
  2.     numero = int(numero)
  3.     print "suspenso" if (numero < 14) else ("aprobado" if (numero < 16) else ("notable" if (numero < 18) else ("sobresaliente" if (numero != 20) else ("matricula de honor"))))
  4.  
  5. nota(70)

Este if en una linea se implemento en python 2.5

Aunque se recomienda usar la sintaxis de siempre, para mayor legibilidad.
  #5 (permalink)  
Antiguo 20/12/2011, 13:48
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 8 meses
Puntos: 11
Respuesta: Duda simple

Ya, si a mi también me funciona, pero quien manda es el juez online xD
Duda solucionada, gracias a los dos ;)
  #6 (permalink)  
Antiguo 20/12/2011, 13:51
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: Duda simple

Quizá será que no estás validando datos, ¿o qué es lo que te dice el juez y/o el ejercicio?

Saludos
__________________
Grupo Telegram Docker en Español
  #7 (permalink)  
Antiguo 20/12/2011, 14:23
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Duda simple

Cita:
Iniciado por el_java_07 Ver Mensaje
Ya, si a mi también me funciona, pero quien manda es el juez online xD
Duda solucionada, gracias a los dos ;)
Seguramente el juez online esta usando una versión menor a la 2.5.

En codechef te dejan escoger varias versiones de python.
  #8 (permalink)  
Antiguo 20/12/2011, 16:11
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 8 meses
Puntos: 11
Respuesta: Duda simple

Pues el juez en cuestión es el de las Olimpiadas de informatica de Murcia (OIRM) y me dice exactamente esto:
Código juez:
Ver original
  1. test T1):   File ``prueba.py``, line 3
  2.     print ``suspenso`` if (numero < 14) else (``aprobado`` if (numero < 16) else (``notable`` if (numero < 18) else (``sobresaliente`` if (numero != 20) else (``matricula de honor``))))
  3.                       ^
  4. SyntaxError: invalid syntax
  5.     while executing
  6. ``close $fd ``

Por lo que supongo que usa una version menor a la 2.5, de todas formas le he enviado un e-mail al Mandamás para saber si es eso ;)

Etiquetas: simple
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:30.