<jupyter_start><jupyter_text>Condiciones en Python ¡Bienvenido! En este cuaderno aprenderás los relacionado con las condiciones en el Lenguaje de Programación Python. Al final del laboratorio sabrás como se utilizan las condiciones, incluyendo sus operadores y sentencias condicionales.  Tabla de Contenido                        Declaraciones de Condición                            Operadores de Comparación                Sentencias Condicionales (Branching)                Operadores Lógicos                                        Cuestionario sobre Condiciones                        Tiempo Estimado: 20 min     Declaraciones de Condición Operadores de Comparación Los operadores de comparacion relacionan algun valor u operador y, en base a una condicion, se obtiene un valor verdadero o falso. Al comparar dos valores se pueden utilizar estos operadores:    igual: ==    diferente: !=    mayor que: >    menor que: &lt;    mayor o igual a: >=    menor o igual a: &lt;= Asignemos a la variable a un valor de 5. Utiliza el operador de igualdad representado por el signo == para determinar si dos valores son iguales. El siguiente caso compara a la variable a con 6.<jupyter_code># Condicion Igual a

a = 5
a == 6<jupyter_output><empty_output><jupyter_text>El resultado es Falso ya que 5 no es igual a 6. Considera el siguiente operador de comparación, i > 5. Si el valor del operando de la izquierda, en este caso la variable i, es mayor que el valor del operando de la derecha, en este caso 5, entonces la declaración es Verdadera. De otra manera seria Falso. Si i es igual a 6, debido a que 6 es mayor a 5, la salida será Verdadera.<jupyter_code># Signo Mayor a 

i = 6
i > 5<jupyter_output><empty_output><jupyter_text>Asignar i = 2. La declaración es falsa porque 2 no es mayor que 5.<jupyter_code># Signo Mayor a 

i = 2
i > 5<jupyter_output><empty_output><jupyter_text>Mostraremos en la siguiente figura algunos valores para la variable i. Los valores mayores a 5 están en verde y el resto en rojo. La región verde representa a la condición cuando esta es **Verdadera**, la roja cuando es **Falsa**. Si el valor de i es 2, obtenemos **Falso** ya que 2 se encuentra en la región roja. De igual forma, si el valor de i es 6, tendremos **Verdadero** al estar el valor dentro del área verde.  La comprobación de desigualdad se representa con el signo de exclamación precediendo el signo de igualdad, si dos operandos no son iguales entonces la condición es **Verdadera**. Por ejemplo, la siguiente condición producirá un resultado **Verdadero** mientras el valor de i se distinto de 6.<jupyter_code># Signo de Desigualdad

i = 2
i != 6<jupyter_output><empty_output><jupyter_text>Cuando i es igual a 6 la expresión de desigualdad arroja Falso.<jupyter_code># Signo de Desigualdad

i = 6
i != 6<jupyter_output><empty_output><jupyter_text>Observa los números de abajo. Cuando la condición es **Verdadera** los números correspondientes son marcados en verde y cuando es **Falsa** se marcan en rojo. Si le asignamos a la variable i el valor de 2 el operador es verdadero debido a que el 2 se encuentra en la región verde. Si le asignamos a la variable i el valor de 6 obtenemos **Falso** como resultado ya que la condición se encuentra en el rojo.  Podemos aplicar el mismo método a las cadenas. Por ejemplo, usando el operador de igualdad en dos de ellas. Si las cadenas no son iguales, el resultado es **Falso**.<jupyter_code># Usar el operador de Igualdad para comparar las cadenas

"ACDC" == "<NAME>"<jupyter_output><empty_output><jupyter_text>Si usamos el operador de desigualdad, la salida será **Verdadera** al no ser las cadenas iguales.<jupyter_code># Usar el operador de Desigualdad para comparar las cadenas

"ACDC" != "<NAME>"<jupyter_output><empty_output><jupyter_text>El operador de desigualdad también se puede usar para comparar letras/palabras/símbolos de acuerdo con el valor ASCII de las letras. El valor decimal mostrado en la siguiente tabla representa el orden del carácter: Por ejemplo, el código ASCII de ! es 21, mientras el código para + es 43. Por consiguiente + es mayor que ! ya que 43 es mayor a 21. De igual forma, el valor ASCII de A es 101, y el valor para B es 102, entonces:<jupyter_code># Comparar los caracteres

'B' > 'A'<jupyter_output><empty_output><jupyter_text>Cuando hay múltiples letras, la primera es la que se toma en cuenta:<jupyter_code># Comparar los caracteres

'BA' > 'AB'<jupyter_output><empty_output><jupyter_text>Observación: Las letras en mayúscula tienen un código ASCII distinto a las minúsculas, esto significa que al comparar letras, Python distinguirá entre mayúsculas y minúsculas. Sentencias Condicionales (Branching) Las sentencias condicionales permiten ejecutar diferentes declaraciones para distintas entradas. Es útil pensar en una **condición if** como una habitación cerrada, si la condición es **Verdadera** podremos entrar y la aplicación podrá ejecutar algunas tareas predefinidas, pero si la condición es **Falsa** el programa ignorara dichas tareas. Por ejemplo, consideremos que el rectángulo azul representa un concierto de ACDC. Si la persona es mayor de 18, puede entrar al concierto. Si tiene 18 o menos, no puede entrar.Utiliza la sentencia condicional vista anteriormente como aquella necesaria para usarse en una **condición if**. La sintaxis es tan sencilla como  if sentencia condicional :, la cual contiene la palabra if, la condición y dos puntos al final. Empieza la tarea que tienes que ejecutar con esta condición en una nueva línea y sangría. Las líneas de código después de los dos puntos y con sangría solo serán ejecutadas cuando la **condición if** sea **Verdadera**. Las tareas finalizaran cuando el código no contenga sangría.En el siguiente caso, las tareas sole ejecutaran print(“you can enter”) si la variable age es mayor a 18 es Verdadera ya que esta parte del código contiene sangría. Sin embargo, la ejecución de print(“move on”) no será afectada por la condición if.<jupyter_code># Ejemplo de condicion if

age = 19
#age = 18

#La expresión que puede ser verdadera o falsa
if age > 18:
    
    #parte con sangría, esta es la expresión que será ejecutada si la condición es verdadera
    print("you can enter" )

#Las declaraciones después de la condición if serán ejecutadas independientemente de si la condición 
#es verdadera o falsa
print("move on")<jupyter_output><empty_output><jupyter_text>Comprueba el código con la variable age comentada (age = 18) El siguiente diagrama será de ayuda para ilustrar el proceso. En el lado izquierdo, podemos observar lo que pasa cuando la condición es Verdadera. La persona que ingresa al concierto de ACDC representa la parte del código que tiene sangría siendo ejecutada; después prosigue. En el lado derecho vemos lo que sucede cuando la condición es Falsa; a la persona no se le permite el acceso, y esta continua. En este caso, el segmento de código en la parte con sangría no es ejecutada, pero el resto de las sentencias si.  La condición else ejecuta un bloque de código si ninguna de las condiciones antes de ella es **Verdadera**.  Usemos de nuevo la analogía del concierto de ACDC. Si la persona tiene 17 años no puede entrar al concierto de ACDC, pero si puede entrar al de MeatLoaf. La sintaxis de la condición else es similar a la de la condición if, de esta forma else :. Observa que no hay una declaración de condición para else :. Averigua que sucede cuando cambias los valores de age.<jupyter_code># Ejemplo de condicion Else

age = 18
# age = 19

if age > 18:
    print("you can enter" )
else:
    print("go see Meat Loaf" )
    
print("move on")<jupyter_output><empty_output><jupyter_text>El proceso se demuestra a continuación, cada posibilidad es mostrada a cada lado de la imagen. En la izquierda esta el caso donde la edad es de 17, asignamos el valor de 17 a la variable age, esta corresponde a la de la persona yendo al concierto de MeatLoaf. La parte derecha muestra lo que sucede cuando la persona es mayor de 18, 19 en este caso, y le es permitido entrar al concierto.  La declaración elif, una abreviación de else if, nos permite comprobar condiciones adicionales si otras antes de ella son Falsas. Si la condición de la declaración elif es Verdadera, la expresión alternativa será ejecutada. Considera el ejemplo del concierto, donde si la persona tiene 18 ira al concierto de Pink Floyd en lugar de ACDC o MeatLoaf. La persona de 18 entra, debido a que no es mayor a 18 no puede ver a ACDC, pero puede ver a Pink Floyd. Después de ver el concierto, prosigue. La sintaxis de la declaración elif es similar a la de if ya que apenas cambiamos la declaración if por elif.<jupyter_code># Ejemplo de declaración elif

age = 18

if age > 18:
    print("you can enter" )
elif age == 18:
    print("go see Pink Floyd")
else:
    print("go see Meat Loaf" )
    
print("move on")<jupyter_output><empty_output><jupyter_text>Las tres combinaciones se muestran en la figura de abajo. La parte de la izquierda muestra lo que sucede cuando la persona es mejor de 18 años. En el componente del centro la edad es de 18. El ultimo y a la derecha ejemplifica a la persona cuando es mayor de 18.  Mira el siguiente código<jupyter_code># Condición de ejemplo

album_year = 1983
album_year = 1970

if album_year > 1980:
    print("Album year is greater than 1980")
    
print('do something..')<jupyter_output><empty_output><jupyter_text>Sientete con la libertad de cambiar el valor de album_year por algún otro – ¡Veras como cambian los resultados! Observa que el bloque de código con sangria aquí arriba solo será ejecutado si el resultado es Verdadero. Al igual que antes, podemos agregar un bloque else al bloque if. El código dentro del else solo será ejecutado si el resultado es Falso.Sintaxis:if (condition):\ haz algoelse:\ haz otra cosa Si la condición en el if es Falsa, la declaración después del else serán ejecutadas. Esto es demostrado en la siguiente figura:<jupyter_code># Condición de ejemplo

album_year = 1983
#album_year = 1970

if album_year > 1980:
    print("Album year is greater than 1980")
else:
    print("less than 1980")

print('do something..')<jupyter_output><empty_output><jupyter_text>Sientete con la libertad de cambiar el valor de album_year por algún otro – ¡Veras como cambian los resultados! Operadores Lógicos A veces es necesario revisar mas de una condición al mismo tiempo. Por ejemplo, pudieras querer ver si una condición y otra son **Verdaderas**. Los operadores lógicos permiten combinar o modificar condiciones.    and    or    notEstos el funcionamiento de estos operadores se muestra en la siguiente tabla de verdad:  La declaración and solo es **Verdadera** cuando ambas condiciones lo son. En el caso de or será verdadero si alguna de las condiciones es **Verdadera**. La declaración not tendrá como resultado el valor de verdad opuesto a la salida. Veamos ahora como determinar si un disco musical fue lanzado después de 1979 (sin incluir ese año) y antes de 1990 (sin incluir ese año). El periodo 1980 y 1989 satisface esta condición. Se demostrará esto en la siguiente figura. La parte verde de las líneas a y b representa periodos donde la declaración es **Verdadera**. La parte verde en la línea c representa el periodo donde la línea a y b son **Verdaderas** al mismo tiempo.  El bloque de código que implementa esto es:<jupyter_code># Condición de ejemplo

album_year = 1980

if(album_year > 1979) and (album_year < 1990):
    print ("Album year was in between 1980 and 1989")
    
print("")
print("Do Stuff..")<jupyter_output><empty_output><jupyter_text>Para determinar si un disco fue lanzado antes de 1980 (.. - 1979) o después de 1989 (1990 - .. ) se puede utilizar una declaración **or**. Los periodos anteriores a 1980 (.. - 1979) o posterior a 1989 (1990 - ..) satisfacen esta condición. Esto se muestra en la figura siguiente, el color verde en la línea a y b representa periodos donde la declaración tiene un valor verdadero. El color verde en **c** indica que la condición es verdadera en al menos una de las condiciones.  El bloque de código que implementa esto es:<jupyter_code># Condición de ejemplo

album_year = 1990

if(album_year < 1980) or (album_year > 1989):
    print ("Album was not made in the 1980's")
else:
    print("The Album was made in the 1980's ")<jupyter_output><empty_output><jupyter_text>La declaración not revisa si la condición es falsa:<jupyter_code># Condición de ejemplo

album_year = 1983

if not (album_year == '1984'):
    print ("Album year is not 1984")<jupyter_output><empty_output><jupyter_text>Cuestionario sobre Condiciones Escribe una declaración if que determine si un disco musical tiene una calificación mayor a 8. Compruébalo utilizando el calificación del disco “Back in Black” el cual tiene un valor de 8.5. Si la condición es verdadera, imprime “"This album is Amazing!"”<jupyter_code># Escribe abajo tu código y presiona Shift+Enter para ejecutarlo
raiting = 6
if raiting > 8: 
    print("woow es un excelente album")<jupyter_output><empty_output><jupyter_text>Haz doble click **aquí** para ver la solución.<!-- rating = 8.5if rating > 8:    print ("This album is Amazing!") -->  Escribe una declaración if-else que determine lo siguiente. Si la calificación es mayor que 8 imprime “this album is amazing”. Si es menor o igual a 8 que imprima “this album is ok”.<jupyter_code># Escribe abajo tu código y presiona Shift+Enter para ejecutarlo
raiting = 5
if raiting > 8:
    print("this album is amazing")
else :
    print("this album is ok")<jupyter_output>this album is ok<jupyter_text>Haz doble click **aquí** para ver la solución.<!-- rating = 8.5if rating > 8:    print ("this album is amazing")else:    print ("this album is ok")-->  Escribe una declaración if que determine si un disco fue lanzado antes de 1980 o en los años 1991 o 1993. Si la condición es verdadera imprime el año de lanzamiento.<jupyter_code># Escribe abajo tu código y presiona Shift+Enter para ejecutarlo
album_year = 1975

if album_year < 1980 or album_year == 1991 or album_year ==1993:
    print("Este album se lanzo en " + str(album_year))<jupyter_output>Este album se lanzo en 1975
{'fraction_non_alphanumeric': 0.0573086175180416, 'fraction_numerical': 0.019668883543229092, 'mean_word_length': 4.378614916286149, 'pattern_counts': {'":': 0, '<': 86, '<?xml version=': 0, '>': 101, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '20', 'dir': 'jupyter-structured-clean-dedup', 'id': '228440', 'license': 'MIT', 'n_tokens_mistral': 4699, 'n_tokens_neox': 4411, 'n_words': 2091, 'path': 'M3/PY0101ES-3-1-Conditions.ipynb', 'repo_name': 'Fragusan/Python-101', 'size': '14152'}