[Python] ¿Por qué esto no funciona?

Iniciado por randomcito, 2 Mayo 2011, 15:05 PM

0 Miembros y 2 Visitantes están viendo este tema.

randomcito

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 (python) [Seleccionar]

#uni => Unidad, tema
#blo => Bloque
uni = raw_input("Numero de la unidad: ")#unidad
print uni
#-----------------------------------
# Asignacion de bloque (segun tema)
#-----------------------------------
    if uni == "1" or "2" or "3":
     blo == "1"
    if uni == "4" or "5" or "6" or "7":
     blo = "2"
    if uni == "8" or "9" or "10":
     blo = "3"
    if uni == "11" or "12" or "13":
     blo = "4"
    if uni == "14" or "15" or "16":
     blo = "5"
    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.

lnvisible

Mira lo que has escrito.

Cita de: !#p1ch1_ '' en  2 Mayo 2011, 15:05 PM
Código (python) [Seleccionar]

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

randomcito

#2
Muchas gracias, vaya error más tonto :xD
Como dije me estoy iniciando en python.

Saludos

Kase

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

randomcito

Una pregunta...

Código (python) [Seleccionar]
'a' == ('a' or 'b'):
True


Pero...

Código (python) [Seleccionar]
'a' == ('b' or 'a'):
False


¿Esto por qué es así?
Saludos

Slava_TZD

Cita de: !#p1ch1 en  8 Mayo 2011, 13:58 PM
Una pregunta...

Código (python) [Seleccionar]
'a' == ('a' or 'b'):
True


Pero...

Código (python) [Seleccionar]
'a' == ('b' or 'a'):
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?


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.

xassiz~

Citarx or y  -   if x is false, then y, else x

He ahí la explicación ;D

Más info