Operadores lógicos y Condicionales

Iniciado por Sajuuk, Mayo 15, 2015, 03:57:57 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 15, 2015, 03:57:57 PM Ultima modificación: Mayo 19, 2015, 10:12:45 PM por Barlan


Operadores lógicos



Los operadores lógicos nos permiten agrupar condiciones simples en una estructura condicional, esto nos facilita la implementación de algoritmos más compactos y comprensibles.

En Python, contamos con 3 operadores lógicos:

  • and
  • or
  • not




and

Operador lógico que solo será verdadero si ambas partes que se evalúan son verdaderas.
Ejemplo:
Código: python

x = int(input("Numero 1: "))
y = int(input("Numero 2: "))

if x <= 10 and y <= 10:
print(True)
else:
print(False)




Como podemos apreciar, solo se imprimirá True si ambos números son menores o iguales a 10.
En caso contrario, si tan solo 1 de ellos es mayor a 10, la condicion será Falsa.



or

Este operador lógico será verdadero si una de las opciones a evaluar es Verdadera. No importa si una es False, y la otra True, or  será verdadera porque hay un True.

Ejemplo:
Código: python

x = int(input("Numero 1: "))
y = int(input("Numero 2: "))

if x <= 10 or y <= 10:
print(True)
else:
print(False)




Tan solo se necesito un True para que or  también fuese True.
Ingresamos 2 numeros.
Si el primero es menor o igual a 10, o el segundo es menor o igual a 10, se imprimirá un True.
En caso de que AMBOS fuesen False (o mayores a 10), or valdrá False



not

El operador lógico not es usado para negar (lo que en otros lenguajes puede ser asÍ: "!variable")

Ejemplo:
Código: python

x = int(input("Numero 1: "))
y = int(input("Numero 2: "))

if not x > y:
print(True)
else:
print(False)




Introducimos 2 numeros.
Llegamos al if: Si x no es mayor a y, entonces imprime un True.
Si si lo es, imprimirá un False.




Sentencias condicionales



CitarEn programación, una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición.
Empezemos con if



Condicional: If



La condicional if permite ejecutar una serie de instrucciones según se cumpla un valor.
En inglés, if significa "si..." (condicion)

Sintaxis:
Código: python

if condición:
instrucción1
instrucción2
.
.
.
instrucción n


Después del if, escribimos la condición a evaluar (y es una expresión lógica), seguido de los dos puntos ( : )
Abajo, escribimos las instrucciónes a ejecutar en caso de que la condición sea verdadera.

Ejemplo:
Un programa nos pide nuestra edad para evaluar si somos mayores de edad. ¿Pero cómo sabrá si lo soy?
En este caso, if nos ayudará:
Código: python

edad = int(input("Ingresa tu edad: "))

if edad < 18:
print("Eres menor de edad")

print("Tu edad es: ", edad)


La variable edad nos pide nuestra edad (es un numero entero).
Después if hace lo siguiente: Si el número ingresado (mi edad) es menor a 18, ejecutar print("Eres menor de edad"). Además, nos imprimirá nuestra edad al final del programa.

Pero si nosotros ingresamos un valor mayor a 18, no pasara nada, solo nos imprimirá nuestra edad, ya que la condicional if resultará falsa, por lo tanto, no se ejecutará el print("Eres menor de edad").

Otro ejemplo:
Código: python

nombre = str(input("Tu nombre: "))

if nombre == "pedro":
print("¡Hola, Pedro!")

Realmente no sé si conozcan el significado de "==", pero igual se los pongo:
Citar"==": Es igual que, es equivalente de, es lo mismo que.

El programa anterior obtiene nuestro nombre (string).
Entonces, if evalua si la cadena que ingresamos es igual que "pedro", osea, revisa nuestra variable, y en caso de que lo que contenga sea "pedro", if será verdadero, y se ejecutará el bloque de instrucciónes abajo.

Si nuestro nombre es "pedro", nos imprimirá: "Hola, pedro!"

Pero en caso de que if sea falso (que no nos llamemos "pedro") el bloque de instrucciones no se ejecutará, y no se imprimirá nada.



El uso de is en If

CitarTodo objeto tiene una identidad, un tipo y un valor. La identidad de un objeto nunca cambiará una vez creado; puedes pesar que es la dirección del objeto en la memoria. El operador is compara la identidad de 2 objetos; la función id() retorna un entero representando la identidad (actualmente implementada como una dirección).

Hemos visto usar "==" en if's, ¿pero qué hay de los "is"?
Para no confundirnos:
Citar
is      es la comparación de identidad.

==    es la comparación de igualdad.

is retornará True si ambos partes comparadas provienen de un mismo objeto.
Se puede entender mejor con el siguiente ejemplo:

Código: python

>>> x = []
>>> y = []
>>>
>>> x is y
False
>>>
>>> x == y
True
>>>


A simple vista pueden parecer lo mismo, pero al usarlos es otra realidad.
Primero, tenemos 2 listas. is comparará x e y, y también lo hará ==
Aquí empieza lo confuso:

Tú puedes decir: "Pero si son 2 listas, son la misma cosa". Grave error.
x es una lista.
y es OTRA lista.

Si nosotros modificamos la lista x, la lista y no lo hará, ya que es otro objeto, otra lista.
Pero si nosotros comparamos igualdad ( == ) nos retornará un True, ya que ambas son objetos listas.
Y repito, si nosotros comparamos con is nos retornará False, ya que no provienen del mismo objeto. Podrán ser listas, pero cada lista es diferente.


Otro ejemplo:

Código: python

>>> n = int()
>>> m = int()
>>> n is m
True
>>>


Como podemos observar, la variable n  y la variable m  parten de un mismo objeto: int()
Al hacer la comparativa, nos devolvió True, porque repito, ambos comienzan de una misma cosa: int()
Si nosotros "imprimimos" int()...

Código: python

>>> int()
0


Nos devolvió un 0, lo que quiere decir que ambas variables provienen de un 0, por eso vemos un True.

Código: python

>>> a = 0
>>> b = 0
>>> a is b
True
>>>


Una manera más clara de verlo. a  y b  valen 0.
Ahora, usemos una función predeterminada de python llamada id() para obtener el valor de identidad de cada variable:

Código: python

>>> id(a)
2012980272
>>> id(b)
2012980272
>>>


Como puedes ver, ambas variables tienen la misma id (identificación), por lo que al comparar con is  , nos devuelve True ya que ambas son identicas.

Ultimo ejemplo:



Cuando nosotros comparamos la variable que nosotros ingresamos con la función predeterminada int(), nos devolvió un False, ya que, como vimos más arriba, al imprimir int() nos devolvió un 0.
Pero cuando comparamos la variable b , que proviene de int(), nos devolvió un True.



Ejemplo enviado por el usuario JaAViEr:
Código: python

'''
Autor: JaAViEr | 0X5D
Twitter: @javieresteban__
Website: http://codigo.ga
'''
class Programa:
           
        def recorrer(self, variable, subitem=False):
     
                for l in variable:
                   
                            tipo = type(l)
                            if tipo is list:
                           
                                    print "-" * 40
                                    print "Lista:", l
                                    print "Recorriendo elementos de la lista (%s)..." % (len(l))
                                    self.recorrer(l, True)
                                   
                            elif tipo is int:
                           
                                    print "Entero:", l
     
                            elif tipo is str:
                           
                                    if subitem:
                                           
                                            print " ",
                                   
                                    print "String:", l
                                   
                            elif tipo is tuple:
                           
                                    print "-" * 40
                                    print "Tupla:", l
                                    print "Recorriendo elementos de la tupla (%s)..." % (len(l))
                                    self.recorrer(l, True)
     
programa = Programa()
lista = [("Tupla Valor A","Tupla Valor B"), 1, "Javier", ["Elemento A", "Elemento B", "Elemento C"]]
programa.recorrer(lista)


Un ejemplo de "is" en IF y un poquito de recursividad. Recorre la variable "lista", evaluando que tipo de objeto es cada elemento, en caso de que algún elemento sea tipo lista/tupla, entonces recorre también sus elementos y evalúa el tipo de objeto de cada uno de ellos.
La salida sería:
Código: php

----------------------------------------
Tupla: ('Tupla Valor A', 'Tupla Valor B')
Recorriendo elementos de la tupla (2)...
        String: Tupla Valor A
        String: Tupla Valor B
Entero: 1
String: Javier
----------------------------------------
Lista: ['Elemento A', 'Elemento B', 'Elemento C']
Recorriendo elementos de la lista (3)...
        String: Elemento A
        String: Elemento B
        String: Elemento C




Condicional: If...else



Else es una condición que se ejecuta en caso de que if sea falso.

Sintaxis:
Código: python

if condición:
instrucción1
instrucción2
.
.
.
instrucciónn
else:
instrucción1
instrucción2
.
.
.
instrucciónn


Ejemplo de uso:

Un programa nos pide un numero, y el mismo evaluará si el numero que ingresamos es menor o igual a 10.
Código: python

numero = int(input("Ingresa un numero: "))

if numero <= 10:
print("El numero es menor o igual a 10.")
else:
print("El numero es mayor que 10.")


La variable numero contiene un valor numerico entero.
If nos evaluará si el numero contenido ahí es menor o igual a 10. En caso verdadero, se ejecutará el print()

PERO, si if resulta ser falso (si el número es mayor que 10), else será verdadero, y nos imprimirá "El número es mayor que 10."

Otro ejemplo:

Usaremos el code de hace rato, pero ahora lo expandiremos añadiendole un else
Código: python

nombre = str(input("Ingresa tu nombre: "))

if nombre == "pedro":
print("Hola, Pedro!")
else:
print("¿Quien eres?")


Si el nombre que ingresamos es "pedro", se ejecutará el print("Hola, Pedro!").
Pero si ingresamos otro nombre, se ejecutará el print("Quien eres?")

Asignarle un valor a una variable según sea el caso.

Habrá veces en que una variable necesite un valor en caso de que otra resulte verdadera (o contenga algo).
Como por ejemplo, si nosotros ingresaramos un nombre, y ese nombre tuviera más de 5 digitos, la variable nueva será verdadera.
Para esto, usaremos una función predeterminada de python: len()

Lo que hace len, es imprimir la longitud de una variable.

Por ejemplo:
"Juan".
Juan es un nombre de 4 caracteres.
Pues eso, len() leerá el contenido, y obtendrá la longitud que tenga la variable (osea, 4, si fueramos a leer el nombre "Juan").

Código: python

nombre = str(input("Ingresa tu nombre: "))

print(len(nombre))




Como podemos ver, Pedro es un nombre de 5 caracteres.
Pues len() imprimirá su longitud.

Igual, Santiago es un nombre de 8 caracteres.

Nada dificil de entender.

Ahora, regresemos a donde nos quedamos:
Código: php

nombre = str(input("Nombre: "))

if len(nombre) >= 5:
y = True
else:
y = False

print(y)




Ingresamos un nombre, entonces if evaluará si la longitud (len()) es mayor o igual a 5. En caso verdadero, la variable y será verdadera.
Pero en caso falso, la variable y será Falsa.

Una manera de asignarle un valor a una variable de manera cortísima y sencilla es haciendo lo siguiente:

Código: python

nombre = str(input("Nombre: "))

y = True if len(nombre) >= 5 else False

print(y)




Si, es algo confuso, pero es sencillo.

La variable y  será True si la longitud de la variable nombre es mayor o igual a 5, en caso contrario, será Falsa.

Otro ejemplo:

Código: python

numero = int(input("Nombre: "))

y = 5 if numero <= 10 else 0

print(y)


Esto quiere decir:
y  valdrá 5 si la variable numero es menor o igual a 10, en caso contrario, valdrá 0.



Condicional: If...elif...else



¿Pero que pasa si aún hay posibilidad de usar una variable?

elif es lo que necesitamos.

Elif es una condicional. Se ejecutará su bloque de código solo si if es falso. Si elif también es falso, se procederá al else
"elif" es una contracción de "else if".
Además, se pueden escribir muchos elif en caso necesario.

Sintaxis:
Código: python

if condición:
instrucción1
instrucción2
.
.
.
instrucciónn
elif condición:
instrucción1
instrucción2
.
.
.
instrucciónn
else:
instrucción1
instrucción2
.
.
.
instrucciónn


Ejemplo de uso:
Código: python

edad = int(input("¿Cuántos años tiene? "))

if edad >= 18 and edad < 120:
    print("Es usted mayor de edad")
elif edad < 0:
    print("No se puede tener una edad negativa")
elif edad >= 120:
    print("¿Seguro que tiene", edad, "años?")
else:
    print("Es usted menor de edad")


Lo anterior funciona así:
El programa nos pide una edad (número entero).
Entonces vamos a if. If evaluará si la edad es mayor o igual a 18, y además, si también la edad es menor o igual a 120 (quizás es la edad más avanzada a la que se ha llegado, no tengo idea. xD). En caso verdadero, print hará un "Es usted mayor de edad"

Pero en caso de que if sea falso, procedemos al primer elif:
SI la edad introducida es menor a 0 (osea, un numero negativo), se ejecutará el print("No se puede tener una edad negativa")

Ahora, si también es falso, vamos al otro elif:
Si la edad introducida es mayor a 120 años, pues sería algo increible, puesto que todos vivimos una media de 70-90 años.
Entonces, procede el print("¿Seguro que tiene", edad, "años?")

Pero si ninguna de las anteriores es verdadera, else ejecutará su bloque de instrucciones:
Citarprint("Es usted menor de edad")
Ya que no somos mayores de edad.




Saludos!


Buen día!

Está bastante completo, estaría bueno que añadas el uso de "is" en el condicional if.
Gracias por el material!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Buen día!

Está bastante completo, estaría bueno que añadas el uso de "is" en el condicional if.
Gracias por el material!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Acabo de agregarlo.  :)

Saludos!


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Buen día!

Está bastante completo, estaría bueno que añadas el uso de "is" en el condicional if.
Gracias por el material!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Acabo de agregarlo.  :)

Saludos!
¡Genial!
Hey, no es de mala leche, solo con fines constructivos, pero pensé que darías ejemplos de "is" en cuanto a comparativa de tipos de variables. Por ejemplo if variable is INT(): blablabla

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Buen día!

Está bastante completo, estaría bueno que añadas el uso de "is" en el condicional if.
Gracias por el material!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Acabo de agregarlo.  :)

Saludos!
¡Genial!
Hey, no es de mala leche, solo con fines constructivos, pero pensé que darías ejemplos de "is" en cuanto a comparativa de tipos de variables. Por ejemplo if variable is INT(): blablabla

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Lo que pasa es que aún no digería muy bien lo que is significaba.
Si yo daba ejemplos podrían estar erroneos.

Ahora ya que comprendo casi en su totalidad el is, agregué algunas cosillas. Igual puede que exista algún error al explicar algo, asi que estaría agradecido que alguien me avisara de ello.


Todo bien, si no te molesta, te puedo enviar un par de ejemplos por MP y si te parecen, los añades..

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Todo bien, si no te molesta, te puedo enviar un par de ejemplos por MP y si te parecen, los añades..

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Muchas gracias JaAViEr
Agregué el ejemplo que me enviaste.

Saludos


CitarEl operador lógico or es usado para negar...

¿Nadie lo notó?  ;D

Saludos!


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
CitarEl operador lógico or es usado para negar...

¿Nadie lo notó?  ;D

Saludos!
En lo personal voy directo al código siempre :p
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta