Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: randomcito en 2 Mayo 2011, 15:05 pm



Título: [Python] ¿Por qué esto no funciona?
Publicado por: randomcito en 2 Mayo 2011, 15:05 pm
Hola a todos

Estoy iniciándome en Python y estoy creando un código que redirige a pdfs online de las soluciones de mi libro de texto del instituto, según los datos del tema, apartado etc (xD), pero bueno, eso es lo de menos.

El caso es que, los temas se dividen en bloques. Esto es relevante porque forma parte del enlace que redirige a los pdfs.

Para que no fuera tan tedioso tener que buscar el bloque, intenté hacer que se definiera el bloque según el tema, echadle un vistazo al trozo de código que he puesto aquí.

Código
  1. #uni => Unidad, tema
  2. #blo => Bloque
  3. uni = raw_input("Numero de la unidad: ")#unidad
  4. print uni
  5. #-----------------------------------
  6. # Asignacion de bloque (segun tema)
  7. #-----------------------------------
  8.    if uni == "1" or "2" or "3":
  9.     blo == "1"
  10.    if uni == "4" or "5" or "6" or "7":
  11.     blo = "2"
  12.    if uni == "8" or "9" or "10":
  13.     blo = "3"
  14.    if uni == "11" or "12" or "13":
  15.     blo = "4"
  16.    if uni == "14" or "15" or "16":
  17.     blo = "5"
  18.    print "El bloque es: " + blo

Le des el valor que le des a la variable uni en el raw_input el bloque siempre queda igual a "5", en vez de cambiar en función de la unidad.
No sé por qué no funciona esta parte, si alguien me pudiera ayudar se lo agradecería.

Saludos!

PD: Por ciertas razones, para definir a uni tiene que ser un raw_input, no puede ser un input.


Título: Re: [Python] ¿Por qué esto no funciona?
Publicado por: lnvisible en 2 Mayo 2011, 19:53 pm
Mira lo que has escrito.

Código
  1. #uni => Unidad, tema
  2. #blo => Bloque
  3. uni = raw_input("Numero de la unidad: ")#unidad
  4. print uni
  5. #-----------------------------------
  6. # Asignacion de bloque (segun tema)
  7. #-----------------------------------
  8.    if uni == ("1" or "2" or "3"):
  9.     blo == "1"
  10.    if uni == ("4" or "5" or "6" or "7"):
  11.     blo = "2"
  12.    if uni == ("8" or "9" or "10"):
  13.     blo = "3"
  14.    if uni == ("11" or "12" or "13"):
  15.     blo = "4"
  16.    if uni == ("14" or "15" or "16"):
  17.     blo = "5"
  18.    print "El bloque es: " + blo


Título: Re: [Python] ¿Por qué esto no funciona?
Publicado por: randomcito en 2 Mayo 2011, 20:14 pm
Muchas gracias, vaya error más tonto :xD
Como dije me estoy iniciando en python.

Saludos


Título: Re: [Python] ¿Por qué esto no funciona?
Publicado por: Kase en 3 Mayo 2011, 02:50 am
que curioso...

esta evaluacion da true
'a' == ('a' or 'b')

y lo obio seria pensar que

1==(1 or 2)

sin embargo esta segunda no funciona o___0


Título: Re: [Python] ¿Por qué esto no funciona?
Publicado por: randomcito en 8 Mayo 2011, 13:58 pm
Una pregunta...

Código
  1. 'a' == ('a' or 'b'):
  2. True

Pero...

Código
  1. 'a' == ('b' or 'a'):
  2. False

¿Esto por qué es así?
Saludos


Título: Re: [Python] ¿Por qué esto no funciona?
Publicado por: Slava_TZD en 8 Mayo 2011, 22:13 pm
Una pregunta...

Código
  1. 'a' == ('a' or 'b'):
  2. True

Pero...

Código
  1. 'a' == ('b' or 'a'):
  2. False

¿Esto por qué es así?
Saludos

Seguramente será una burrada...xD ¿pero tendrá algo que ver con que se comparen de izquierda a derecha como en C?


Título: Re: [Python] ¿Por qué esto no funciona?
Publicado por: xassiz~ en 8 Mayo 2011, 23:01 pm
Citar
x or y  -   if x is false, then y, else x

He ahí la explicación ;D

Más info (http://docs.python.org/release/2.5.2/lib/boolean.html)