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:
andOperador lógico que solo será verdadero si ambas partes que se evalúan son verdaderas.
Ejemplo:
x = int(input("Numero 1: "))
y = int(input("Numero 2: "))
if x <= 10 and y <= 10:
print(True)
else:
print(False)
(http://i59.tinypic.com/724orq.png)
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.
orEste 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:
x = int(input("Numero 1: "))
y = int(input("Numero 2: "))
if x <= 10 or y <= 10:
print(True)
else:
print(False)
(http://i57.tinypic.com/t670nd.png)
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
notEl operador lógico not es usado para negar (lo que en otros lenguajes puede ser asÍ: "!variable")
Ejemplo:
x = int(input("Numero 1: "))
y = int(input("Numero 2: "))
if not x > y:
print(True)
else:
print(False)
(http://i58.tinypic.com/f02ntg.png)
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:
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á:
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:
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 IfCitarTodo 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:
>>> 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:
>>> 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()...
>>> int()
0
Nos devolvió un 0, lo que quiere decir que
ambas variables provienen de un 0, por eso vemos un True.
>>> 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:
>>> 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:
(http://i58.tinypic.com/27ybdb6.png)
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:
'''
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:
----------------------------------------
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:
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.
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
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").
nombre = str(input("Ingresa tu nombre: "))
print(len(nombre))
(http://i58.tinypic.com/zme5px.png)
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:
nombre = str(input("Nombre: "))
if len(nombre) >= 5:
y = True
else:
y = False
print(y)
(http://i59.tinypic.com/2wrdy8p.png)
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:
nombre = str(input("Nombre: "))
y = True if len(nombre) >= 5 else False
print(y)
(http://i59.tinypic.com/2d0x6xt.png)
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:
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:
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:
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!
Todo bien, si no te molesta, te puedo enviar un par de ejemplos por MP y si te parecen, los añades..
Saludos, Javier. (http://codigo.ga)