Lección 2 Condicionales, flujos,modulos, match
Estudiaremos las Condicionales, Controladores de flujo, Módulo, y match`.
Introducción
- Condicionales
- Declaraciones If
- Control flujo, elif y else
- or
- and
- Módulo
- Creando nuestra propia función de paridad
- pythonic
Condicionales
- Los condicionales le permiten a usted, el programador, permitir que su programa tome decisiones: como si su programa tuviera la opción de tomar el camino de la izquierda o el de la derecha según ciertas condiciones.
- Dentro de Python hay un conjunto de "operadores" que se utilizan para hacer preguntas matemáticas.
>
y<
los símbolos probablemente le resulten bastante familiares.>=
denota "mayor o igual que".<=
denota "menor o igual a".==
denota “iguales, ¡aunque observe el doble signo igual! Un solo signo igual asignaría un valor. Se utilizan signos de doble igual para comparar variables.!=
denota “no igual a.- Los enunciados condicionales comparan un término de la izquierda con un término de la derecha.
Declaraciones If
En la ventana de su terminal, escriba
code compare.py
otouch compare.py
. Esto creará un archivo nuevo llamado "comparar".En la ventana del editor de texto, comience con lo siguiente:
x = int(input("What's x? ")) y = int(input("What's y? ")) if x < y: print("x is less than y")
Observe cómo su programa toma la entrada del usuario tanto para x como para y, convirtiéndolas como números enteros y guardándolas en sus respectivas variables x e y. Luego, el
if
enunciado compara x e y. Six < y
se cumple la condición de ,print
se ejecuta la declaración.if
Las declaraciones utilizanbool
valores booleanos (verdadero o falso) para decidir si se ejecutan o no. Si la declaración dex > y
es verdadera, el compilador la registrarátrue
y ejecutará el código.
Controlar flujo, elif y más
Revise más a fondo su código de la siguiente manera:
x = int(input("What's x? ")) y = int(input("What's y? ")) if x < y: print("x is less than y") if x > y: print("x is greater than y") if x == y: print("x is equal to y")
Observe cómo está proporcionando una serie de
if
declaraciones. Primero,if
se evalúa la primera declaración. Luego, la segundaif
declaración ejecuta su evaluación. Finalmente, la últimaif
declaración ejecuta su evaluación. Este flujo de decisiones se llama "flujo de control".Nuestro código se puede representar de la siguiente manera:
Este programa se puede mejorar si no se hacen tres preguntas consecutivas. Después de todo, no las tres preguntas pueden tener un resultado de
true
! Revise su programa de la siguiente manera:x = int(input("What's x? ")) y = int(input("What's y? ")) if x < y: print("x is less than y") elif x > y: print("x is greater than y") elif x == y: print("x is equal to y")
Observe cómo el uso de
elif
permite que el programa tome menos decisiones. Primero,if
se evalúa la declaración. Si se determina que esta afirmación es verdadera,elif
no se ejecutarán todas las declaraciones. Sin embargo, siif
se evalúa la afirmación y se determina que es falsa,elif
se evaluará la primera. Si esto es cierto, no ejecutará la evaluación final.Nuestro código se puede representar de la siguiente manera:
Si bien es posible que su computadora no note una diferencia en cuanto a velocidad entre nuestro primer programa y este programa revisado, considere cómo un servidor en línea que ejecuta miles de millones o billones de este tipo de cálculos cada día definitivamente podría verse afectado por una decisión de codificación tan pequeña.
Hay una última mejora que podemos hacer a nuestro programa. Observe cómo lógicamente
elif x == y
no es necesario ejecutar una evaluación. Después de todo, si lógicamente x no es menor que y Y x no es mayor que y, x DEBE ser igual a y. Por lo tanto, no tenemos que correrelif x == y
. Podemos crear un resultado predeterminado "general" utilizando unaelse
declaración. Podemos revisar de la siguiente manera:x = int(input("What's x? ")) y = int(input("What's y? ")) if x < y: print("x is less than y") elif x > y: print("x is greater than y") else: print("x is equal to y")
Observe cómo la complejidad relativa de este programa ha disminuido a través de nuestra revisión.
Nuestro código se puede representar de la siguiente manera:
or
or
permite que su programa decida entre una o más alternativas. Por ejemplo, podríamos editar aún más nuestro programa de la siguiente manera:x = int(input("What's x? ")) y = int(input("What's y? ")) if x < y or x > y: print("x is not equal to y") else: print("x is equal to y")
Observe que el resultado de nuestro programa es el mismo, pero la complejidad disminuye. La eficiencia de nuestro código aumenta.
En este punto, nuestro código es bastante bueno. Sin embargo, ¿podría mejorarse aún más el diseño? Podríamos editar aún más nuestro código de la siguiente manera:
x = int(input("What's x? ")) y = int(input("What's y? ")) if x != y: print("x is not equal to y") else: print("x is equal to y")
Observe cómo eliminamos por
or
completo y simplemente preguntamos: "¿X no es igual a y?" Hacemos una y sólo una pregunta. ¡Muy eficiente!A modo de ilustración, también podríamos cambiar nuestro código de la siguiente manera:
x = int(input("What's x? ")) y = int(input("What's y? ")) if x == y: print("x is equal to y") else: print("x is not equal to y")
Observe que el
==
operador evalúa si lo que está a la izquierda y a la derecha son iguales entre sí. El uso de signos de doble igual es muy importante. Si usa solo un signo igual, es probable que el compilador genere un error.Nuestro código se puede ilustrar de la siguiente manera:
and
Similar a
or
,and
se puede utilizar dentro de declaraciones condicionales.Ejecutar en la ventana de terminal
code grade.py
otouch grade.py
. Inicie su nuevo programa de la siguiente manera:score = int(input("Score: ")) if score >= 90 and score <= 100: print("Grade: A") elif score >=80 and score < 90: print("Grade: B") elif score >=70 and score < 80: print("Grade: C") elif score >=60 and score < 70: print("Grade: D") else: print("Grade: F")
Tenga en cuenta que al ejecutar
python grade.py
, podrá ingresar una puntuación y obtener una calificación. Sin embargo, observe cómo existe la posibilidad de que se produzcan errores.Por lo general, nunca queremos confiar en que nuestros usuarios ingresen la información correcta. Podríamos mejorar nuestro código de la siguiente manera:
score = int(input("Score: ")) if 90 <= score <= 100: print("Grade: A") elif 80 <= score < 90: print("Grade: B") elif 70 <= score < 80: print("Grade: C") elif 60 <= score < 70: print("Grade: D") else: print("Grade: F")
Observe cómo Python le permite encadenar operadores y condiciones de una manera poco común en otros lenguajes de programación.
Aún así, podemos mejorar aún más nuestro programa:
score = int(input("Score: ")) if score >= 90: print("Grade: A") elif score >= 80: print("Grade: B") elif score >= 70: print("Grade: C") elif score >= 60: print("Grade: D") else: print("Grade: F")
Observe cómo el programa mejora al hacer menos preguntas. Esto hace que nuestro programa sea más fácil de leer y mucho más fácil de mantener en el futuro.
Puede obtener más información en la documentación de Python sobre flujo de control .
Módulo
En matemáticas, la paridad se refiere a si un número es par o impar.
El
%
operador de módulo en programación permite ver si dos números se dividen uniformemente o se dividen y tienen resto.Por ejemplo, 4 % 2 daría como resultado cero, porque divide uniformemente. Sin embargo, 3 % 2 no se divide uniformemente y daría como resultado un número distinto de cero.
En la ventana de terminal, cree un nuevo programa escribiendo
code parity.py
otouch parity.py
. En la ventana del editor de texto, escriba su código de la siguiente manera:x = int(input("What's x? ")) if x % 2 == 0: print("Even") else: print("Odd")
Observe cómo nuestros usuarios pueden escribir cualquier número 1 o mayor para ver si es par o impar.
Creando nuestra propia función de paridad
Como se analizó en la lección 0, nuestro Primer Programa, le resultará útil crear una función propia.
Podemos crear nuestra propia función para comprobar si un número es par o impar. Ajuste su código de la siguiente manera:
def main(): x = int(input("What's x? ")) if is_even(x): print("Even") else: print("Odd") def is_even(n): if n % 2 == 0: return True else: return False main()
Observe que nuestra
if
declaraciónis_even(x)
funciona aunque no haya ningún operador allí. Esto se debe a que nuestra función devuelve unbool
(o booleano), verdadero o falso, a la función principal. Laif
declaración simplemente evalúa siis_even
esx
verdadero o falso.
Pythonic
En el mundo de la programación, existen tipos de programación que se denominan de naturaleza "Pythonic". Es decir, hay formas de programar que a veces sólo se ven en la programación Python. Considere la siguiente revisión de nuestro programa:
def main(): x = int(input("What's x? ")) if is_even(x): print("Even") else: print("Odd") def is_even(n): return True if n % 2 == 0 else False main()
Observe que esta declaración de devolución en nuestro código es casi como una oración en inglés. Esta es una forma única de codificar que solo se ve en Python.
Podemos revisar aún más nuestro código y hacerlo cada vez más legible:
def main(): x = int(input("What's x? ")) if is_even(x): print("Even") else: print("Odd") def is_even(n): return n % 2 == 0 main()
Observe que el programa evaluará lo que está sucediendo dentro del
n % 2 == 0
como verdadero o falso y simplemente lo devolverá a la función principal.
match
De manera similar a las declaraciones
if
,elif
yelse
,match
las declaraciones se pueden usar para ejecutar código condicionalmente que coincida con ciertos valores.Considere el siguiente programa:
name = input("What's your name? ") if name == "Harry": print("Gryffindor") elif name == "Hermione": print("Gryffindor") elif name == "Ron": print("Gryffindor") elif name == "Draco": print("Slytherin") else: print("Who?")
Observe que las primeras tres declaraciones condicionales imprimen la misma respuesta.
Podemos mejorar este código ligeramente con el uso de la
or
palabra clave:name = input("What's your name? ") if name == "Harry" or name == "Hermione" or name == "Ron": print("Gryffindor") elif name == "Draco": print("Slytherin") else: print("Who?")
Observe que la cantidad de
elif
declaraciones ha disminuido, lo que mejora la legibilidad de nuestro código.Alternativamente, podemos usar
match
declaraciones para asignar nombres a casas. Considere el siguiente código:name = input("What's your name? ") match name: case "Harry": print("Gryffindor") case "Hermione": print("Gryffindor") case "Ron": print("Gryffindor") case "Draco": print("Slytherin") case _: print("Who?")
Observe el uso del
_
símbolo en el último caso. Esto coincidirá con cualquier entrada, lo que dará como resultado un comportamiento similar al de unaelse
declaración.Una declaración de coincidencia compara el valor que sigue a la
match
palabra clave con cada uno de los valores que siguen a lascase
palabras clave. En caso de que se encuentre una coincidencia, se ejecuta la sección de código sangría respectiva y el programa detiene la coincidencia.Podemos mejorar el código:
name = input("What's your name? ") match name: case "Harry" | "Hermione" | "Ron": print("Gryffindor") case "Draco": print("Slytherin") case _: print("Who?")
Observe el uso de la barra vertical única
|
. Al igual que laor
palabra clave, esto nos permite verificar múltiples valores en la mismacase
declaración.
Resumiendo
Ahora tiene el poder dentro de Python de usar declaraciones condicionales para hacer preguntas y hacer que su programa actúe en consecuencia. En esta conferencia, discutimos…
- Condicionales;
if
Declaraciones;- Controlar el flujo,
elif
yelse
; or
;and
;- Módulo;
- Creando tu propia función;
- Codificación Pythonic;
- y
match
.