Está en la página 1de 28

Entornos de Python

Puedes ejecutar Python a través de una variedad de entornos.


Estos entornos incluyen cuadernos (notebooks), entornos de
desarrollo integrados (IDE) y la línea de comandos, que te serán
presentados en esta lectura. Aquí te centrarás principalmente en
los cuadernos, ya que así es como interactuarás con Python en
este curso.
Cuadernos (notebooks)
Una forma de escribir código Python es a través de un cuaderno,
también conocido como notebook. En este curso, interactuarás
con Python a través de cuadernos. Un cuaderno es una interfaz
en línea para escribir, almacenar y ejecutar código. También te
permite documentar información sobre el código. El contenido
del cuaderno puede aparecer en una celda de código o en una
celda de Markdown.
Celdas de código
Las celdas de código están diseñadas para escribir y ejecutar
código. En un cuaderno, se proporciona un mecanismo para
ejecutar estas celdas de código, habitualmente representado por
un botón de reproducción dentro de la celda. Al ejecutar el
código, su salida se mostrará después del mismo.
Celdas de Markdown
Por otro lado, las celdas Markdown sirven para describir el
código. Permiten dar formato al texto utilizando lenguaje
Markdown, el cual se emplea para dar formato a texto plano en
editores de texto y de código. Por ejemplo, puedes indicar que el
texto debe tener un determinado estilo de encabezado.
Entornos de cuadernos habituales
Dos entornos de cuadernos (notebooks) habituales son Jupyter
Notebook y Google Collaboratory (Google Colab). Permiten
ejecutar varios lenguajes de programación, incluido Python.
Entornos de desarrollo integrados
(IDE)
Otra opción para escribir código Python es a través de un
entorno de desarrollo integrado (IDE), una aplicación de
software para escribir código que proporciona asistencia para la
edición y herramientas de corrección de errores. Los IDE
incluyen una interfaz gráfica de usuario (GUI) que ofrece a los
programadores diversas opciones para personalizar y construir
sus programas.
Línea de comandos
La línea de comandos es otro entorno que te permite ejecutar
programas Python. Anteriormente, aprendiste que una interfaz
de línea de comandos (CLI) es una interfaz de usuario basada
en texto que utiliza comandos para interactuar con la
computadora. Al ingresar comandos en la línea de comandos,
puedes acceder a todos los archivos y directorios guardados en
tu disco duro, incluidos aquellos que contienen código Python
que deseas ejecutar. También, puedes usar la línea de comandos
para abrir un editor de archivos y crear un nuevo archivo
Python.
Conclusiones clave
Los analistas de seguridad pueden acceder a Python a través de
diversos entornos, como cuadernos, entornos de desarrollo
integrados y la línea de comandos. En este curso, utilizarás
cuadernos, que son interfaces en línea para interactuar con el
código. Estos contienen celdas de código para escribir y ejecutar
código, así como celdas de Markdown para descripciones en
texto plano.

Me llamo Akash. Soy Ingeniero de Seguridad en Google.


Como ingeniero de ciberseguridad, usarás Python casi toda tu carrera.
Es muy importante aprender Python.
Cuando te adentres en la ciberseguridad, estarás lidiando con millones
de puntos de datos, lo cual sería muy difícil de analizar manualmente.
Es aquí cuando entra Python para automatizar, escribir scripts
y pequeños programas que serán capaces de hacer lo mismo al instante.
Aprender Python es divertido. Cuando ves que con 10 líneas de código
se pueden analizar
megabytes de datos en segundos, puede ser muy gratificante.
Hay un montón de recursos para Python y muchas comunidades de
código abierto.
La gente ayuda mucho.
Mantén la curiosidad, desafíate con pequeños problemas,
pon manos a la obra
y busca recursos de sintaxis y aprendizaje en línea.
Como Ingeniero de Seguridad en Google Chrome,
protejo a nuestros clientes contra gobiernos extranjeros
y amenazas persistentes en todo el mundo.
Las amenazas son ilimitadas,
por eso, la ciberseguridad me entusiasma mucho.
Así que mantente en ello, es una habilidad
esencial que tomará algo de tiempo al principio para desarrollar, pero
te servirá a lo largo de toda tu carrera.

El siguiente tema se relaciona con la categorización de datos en Python.


Primero, pensemos en otro entorno donde aplicamos categorías.
Pensemos en trabajar en una cocina.
Al cocinar, podemos clasificar los ingredientes que usamos.
Por ejemplo, las zanahorias y los pimientos son vegetales,
y el pollo y la ternera son carne.
Las categorías son importantes
porque afectan cómo manejamos estos ingredientes.
Al trabajar en Python, los tipos de datos cumplen un propósito similar.
Un tipo de datos es una categoría para un tipo particular de elemento de
datos.
Python usa varios tipos de datos.
Veremos cadena,
float, enteros, booleanos y listas.
Al imprimir el texto “Hello Python!” del video anterior,
usamos datos de cadena.
Los datos de cadena son una secuencia ordenada de caracteres.
Los caracteres pueden ser letras,
símbolos, espacios e incluso números.
Los números en el tipo de datos de cadena
no se pueden usar para hacer cálculos.
Todos los caracteres de una cadena deben colocarse entre comillas.
Por suerte, Python te avisa
con un mensaje de error si te olvidas una comilla.
Usemos el código de antes
y veamos qué pasa si omitimos las comillas.
Observa que falta una comilla al final de la cadena.
Al ejecutar este código, recibiremos un mensaje de error.
Python también admite tipos de datos numéricos.
Al trabajar con datos numéricos, no colocamos los datos entre comillas.
Los datos numéricos pueden ser float y enteros.
Los datos float son números con un punto decimal.
Pueden ser, por ejemplo, fracciones como 2.1 o 10.5.
También incluye números enteros
con un punto decimal como 2.0 o 10.0.
Los datos enteros son números sin punto decimal.
Los números como 0, -9 y 5000 son enteros válidos.
Hasta ahora, hemos usado la función print para generar una cadena.
Pero también se puede usar con los tipos float y entero para hacer
cálculos.
Probemos un ejemplo de esto.
En primer lugar, ya que es buena práctica,
agreguemos un comentario para explicar el propósito del código.
Luego le indicaremos a Python qué calcular.
La salida nos da la respuesta.
1 + 1 es igual a 2.
Podemos usar print con datos float y enteros
para todo tipo de operaciones matemáticas,
como sumas, restas, multiplicaciones y divisiones.
El tercer tipo de datos en Python se llama booleano.
Los datos booleanos solo pueden ser uno de dos valores,
verdadero o falso.
Los booleanos son útiles para la lógica en nuestros programas.
Por ejemplo, comparemos números y determinemos los valores
booleanos.
Primero usaremos la función print para evaluar si 10 es menor que 5.
Luego evaluaremos si 9 es menor que 12.
¿Qué te parece?
10 no es menor que 5, pero 9 es menor que 12, ¿cierto?
Veamos cómo maneja Python esto al ejecutarlo.
Python está de acuerdo.
La primera línea de salida dice que es falso, o false, decir “10 es menor
que 5”.
La segunda dice que es verdadero, o true, decir “9 es menor que 12”.
Usaremos más booleanos al empezar con condiciones en el código.
El último tipo de datos son las listas.
Los datos de lista se componen de una estructura
de datos en forma secuencial.
Crearemos e imprimiremos una lista de los nombres de usuario
de las tres personas que tienen acceso a un archivo confidencial.
Primero agregamos nuestro comentario sobre la intención de imprimir
esta lista.
Después de la palabra clave print, agregamos la lista.
Debemos colocar la lista entre corchetes.
Luego colocamos los elementos individuales de la lista
entre comillas y los separamos con comas.
Ahora, ejecutemos esto.
Como era de esperar, obtenemos la lista.
Cuando se imprime, aún tiene los corchetes.
Esto es solo el comienzo de lo que puedes hacer con las listas.
Al desarrollar tus habilidades,
aprenderás a acceder y editar elementos individuales de listas.
Esto fue un breve resumen
de los cinco tipos de datos principales en Python:
cadena, entero, float, booleano y lista.
Estos son tipos de datos comunes con los que trabajarás
a medida que avanzamos en las lecciones.

Anteriormente, exploraste los tipos de datos en Python. Un tipo de datos


es una categoría para una clase particular de elemento de datos. Te
enfocaste en los datos de cadena, de lista, float, entero y booleano, que
son los tipos de datos con los que trabajarás a lo largo de este curso. En
esta lectura, profundizarás tus conocimientos sobre estos tipos de datos y
se te presentarán, además, tres tipos adicionales.
Cadena
En Python, las cadenas son datos que constan de una secuencia ordenada
de caracteres. Los caracteres de una cadena pueden incluir letras,
números, símbolos y espacios. Estos deben colocarse entre comillas. A
continuación, verás una serie de cadenas válidas:

"updates needed"

"20%"

"5.0"
"35"

"**/**/**"

""

Nota: El último elemento (""), que no contiene nada entre comillas, se


denomina cadena vacía.

Puedes usar la función print() para mostrar una cadena. Puedes explorar
esto ejecutando este código

print("updates needed")

updates needed

El código imprime "updates needed".


Las cadenas pueden ir entre comillas dobles ("") o simples (''). El
siguiente código demuestra que el mismo mensaje se imprime cuando la
cadena está entre comillas simples:

print('updates needed')

updates needed

Lista
En Python, una lista es una estructura que consta de una serie de datos en
forma secuencial. Los elementos de las listas pueden ser de cualquier tipo
de datos, como cadenas, enteros, booleanos o, incluso, otras listas. Los
elementos de una lista se colocan entre corchetes y cada elemento se
separa con una coma. La siguiente lista contiene elementos de varios
tipos de datos:

[12, 36, 54, 1, 7]

["eraab", "arusso", "drosas"]


[True, False, True, True]

[15, "approved", True, 45.5, False]

[]

Nota: El último elemento [ ], que no contiene nada entre corchetes, se


denomina lista vacía.

También puedes usar la función print()print print() para mostrar una lista:

print([12, 36, 54, 1, 7])


[12, 36, 54, 1, 7]

Enteros
En Python, los datos enteros son datos formados por un número sin punto decimal. A
continuación, verás ejemplos de datos enteros:

-100

-12

-1

20

500

Los enteros no se colocan entre comillas. Puedes usar la función print() para mostrar un número
entero. Cuando ejecutas este código, muestra el número 5:
print(5)

También puedes utilizar la función print() para realizar operaciones matemáticas con números
enteros. Por ejemplo, este código suma dos enteros:
print(5 + 2)
El resultado es 7. También, puedes restar, multiplicar o dividir dos números enteros.

Float
Los datos float (de punto flotante) son datos formados por un número con un punto decimal. A
continuación, verás ejemplos de datos flotantes:

-2.2

-1.34

0.0

0.34

Al igual que los datos enteros, los float no se colocan entre comillas. Además, también puedes
utilizar la función print() para mostrar float o realizar cálculos matemáticos con ellos. Puedes
ejecutar el siguiente código para revisar el resultado de este cálculo:
print(1.2 + 2.8)
4.0

Nota: La división de dos valores enteros o dos valores float da como resultado una salida float
cuando se utiliza el símbolo /:
print(1/4)
print(1.0/4.0)
0.25 0.25

La salida de ambos cálculos es el valor float de .25.


Si deseas devolver un valor entero de un cálculo que divide dos números enteros, debes usar el
símbolo // en su lugar:
print(1//4)
En este caso, la salida es el valor entero 0, ya que el uso de este símbolo redondea el cálculo de .25
al entero más cercano.

Booleanos
Los datos booleanos son datos que solo pueden tener uno de dos valores: True (verdadero) o False
(falso).
No debes colocar los valores booleanos entre comillas. Al ejecutar el siguiente código, se muestra
el valor booleano True:
print(True)
True

También puedes devolver un valor booleano comparando números. Como 9 no es mayor que 10,
este código se evalúa como False:

print(9 > 10)


False

Tipos de datos adicionales


En este curso, trabajarás con los tipos de datos cadena, lista, entero,
float y booleano, aunque existen otros tipos de datos adicionales.
Estos incluyen datos de tupla, de diccionario y de conjunto.
Tupla
Una tupla consta de un conjunto de datos que no se pueden modificar. Al
igual que las listas, las tuplas pueden contener elementos de distintos
tipos de datos.
Una diferencia entre los datos de tupla y los de lista es que es
posible modificar los elementos en una lista, pero no es posible
hacerlo en una tupla. Esto podría ser útil en un contexto de
ciberseguridad. Por ejemplo, si se almacenan identificadores de
software en una tupla para garantizar que no serán alterados, esto
puede brindar la certeza de que una lista de control de acceso solo
bloqueará el software previsto.
La sintaxis de una tupla también es diferente de la de una lista. Una
tupla se coloca entre paréntesis en lugar de entre corchetes. A
continuación, verás ejemplos de tuplas:

("wjaffrey", "arutley", "dkot")

(46, 2, 13, 2, 8, 0, 0)

(True, False, True, True)

("wjaffrey", 13, True)

Consejo profesional: Las tuplas son más eficientes en cuanto a memoria


que las listas, por lo cual resultan útiles cuando se trabaja con una
gran cantidad de datos.
Diccionario
Un diccionario consiste en una o más parejas clave-valor. Cada clave se
asigna a un valor. Entre la clave y el valor se intercalan dos puntos
(:). Las comas separan las parejas clave-valor de otras parejas clave-
valor, y el diccionario se coloca entre llaves ({}).
Los diccionarios son útiles para almacenar y recuperar datos de forma
predecible. Por ejemplo, el siguiente diccionario asigna un nombre de
un edificio a un número. El nombre del edificio es el valor y el número
es la clave. Después de la clave se colocan dos puntos.
{ 1: "East",
2: "West",
3: "North",
4: "South" }

Conjunto
En Python, un conjunto es una colección desordenada de valores únicos.
Esto significa que no puede haber dos valores iguales en un conjunto.
Los elementos de un conjunto siempre se colocan entre llaves y se
separan con una coma. Estos elementos pueden ser de cualquier tipo de
datos. Este ejemplo de conjunto contiene cadenas de nombres de usuario:
{"jlanksy", "drosas", "nmason"}
Conclusiones clave
Es importante que los analistas de seguridad que programan en Python
estén familiarizados con los distintos tipos de datos. Los tipos de
datos con los que trabajarás en este curso son cadena, lista, entero,
float y booleano. Otros tipos de datos adicionales son tupla,
diccionario y conjunto. Cada uno tiene su propio propósito y sintaxis.

Los analistas de seguridad que trabajan en Python utilizarán distintas


variables. Algunos ejemplos incluyen variables para intentos de inicio
de sección, listas de permisos y direcciones.
Trabajar con variables
En Python, es importante saber cómo asignar variables y cómo
reasignarlas.
Asignación y reasignación de variables
Si deseas crear una variable llamada username y asignarle un valor de
"nzhao", coloca la variable a la izquierda del signo igual y su valor a
la derecha:
# Assign 'username'
username = "nzhao"
Si luego restableces este nombre de usuario a "zhao2", seguirás
refiriéndote a ese contenedor de variable como username.
# Reassign 'username'
username = "zhao2"
Aunque el contenido haya cambiado de "nzhao" a "zhao2", la variable
username seguirá siendo la misma.
Nota: Debes colocar "nzhao" y "zhao2" entre comillas porque son
cadenas. Python asigna automáticamente a una variable su tipo de datos
cuando se ejecuta. Por ejemplo, cuando la variable username contiene la
cadena "nzhao", se le asigna un tipo de datos de cadena.
Asignar variables a otras variables
Mediante un proceso similar, también puedes asignar variables a otras
variables. En el siguiente ejemplo, la variable username se asigna a
una nueva variable old_username:
# Assign a variable to another variable
username = "nzhao"
old_username = username
Como username contiene el valor de cadena de "nzhao" y old_username
contiene el valor de username, old_username ahora contiene el valor de
"nzhao".
Combinar todo
El siguiente código demuestra cómo se puede actualizar un nombre de
usuario. A la variable username se le asigna un valor inicial, el cual
luego se almacena en una segunda variable llamada old_username. Después
de esto, a la variable username se le reasigna un nuevo valor. Puedes
ejecutar este código para obtener un mensaje sobre el nombre de usuario
anterior y el nombre de usuario actual:

username = "nzhao"
old_username = username
username = "zhao2"
print("Previous username:", old_username)
print("Current username:", username)

Previous username: nzhao


Current username: zhao2

Prácticas recomendadas para nombrar variables


Puedes nombrar una variable casi como quieras, pero hay algunas pautas que debes seguir para
asegurar una sintaxis correcta y evitar errores:

Usa solo letras, números y guiones bajos en los nombres de las variables. Ejemplos válidos:
date_3, username, interval2

Comienza el nombre de una variable con una letra o un guion bajo. No empieces con un número.
Ejemplos válidos: time, _login

Recuerda que los nombres de variables en Python distinguen entre mayúsculas y minúsculas.
Todas estas son variables diferentes: time, Time, TIME, timE.

No utilices las palabras clave o funciones integradas de Python para nombres de variables. Por
ejemplo, las variables no deben llamarse True, False, o if.

Además, debes seguir estas pautas de estilo para que tu código sea más fácil de leer y comprender:
Separa dos o más palabras con guiones bajos. Ejemplos válidos: login_attempts, invalid_user,
status_update

Evita variables con nombres similares. Estas variables podrían confundirse fácilmente entre sí:
start_time, starting_time, time_starting.

Evita nombres innecesariamente largos para las variables. Por ejemplo, no des a las variables
nombres como variable_that_equals_3.

Los nombres deben describir los datos y no ser palabras aleatorias. Ejemplos válidos:
num_login_attempts, device_id, invalid_usernames

Nota: Se recomienda usar guiones bajos para separar varias palabras en las variables, pero otra
convención que puedes encontrar es escribir con mayúscula la primera letra de cada palabra,
excepto la primera palabra. Ejemplo: loginAttempt
Conclusiones clave
Es importante que los analistas de seguridad conozcan muy bien las variables. Estas actúan como
contenedores de datos. Se les asignan valores y también se les puede reasignar otros valores o
variables. Recordar las mejores prácticas para nombrar variables resulta muy útil para crear un
código más funcional y fácilmente legible.
Introducción
Las variables ayudan a los analistas de seguridad a realizar un seguimiento de una variedad de
información relacionada con la seguridad. Por ejemplo, es posible que un analista tenga que crear
variables de Python para los usuarios a los que se les permite iniciar sesión, cuántos intentos de
inicio de sesión tienen en total y la cantidad actual de veces que intentaron iniciar sesión.
En este laboratorio, practicarás cómo asignar valores a variables y determinar sus tipos de datos.
Consejos para completar este laboratorio
Situación hipotética
Eres un analista de seguridad y tienes la responsabilidad de escribir código que automatice el
análisis de los intentos de inicio de sesión realizados en un dispositivo específico. Como primer
paso, deberás crear variables para realizar un seguimiento de la información relevante para el
proceso de inicio de sesión. Esta información incluye el ID del dispositivo, la lista de nombres de
usuario aprobados, los intentos de inicio de sesión máximos permitidos por usuario, los intentos de
inicio de sesión actuales realizados por un usuario y el estado de inicio de sesión.
A lo largo de este laboratorio, asignarás estas variables y verificarás los tipos de datos de estas.
Tarea 1
Imagina que, en tu trabajo como analista, hay un dispositivo al que solo pueden acceder los
usuarios especificados en una lista de permisos y que el ID del dispositivo es "72e08x0".
En la siguiente celda de código, asigna este valor a una variable llamada id_dispositivo. Luego,
muestra el contenido de la variable y observa el resultado.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [1]:

# Asigna a la variable `id_dispositivo` el ID del dispositivo al que solo los usuarios especificados
pueden acceder

id_dispositivo = "72e08x0"

# Muestra `id_dispositivo`

print(id_dispositivo)

72e08x0
Pista 1
Pista 2
Pista 3
Tarea 2
Ahora que la variable id_dispositivo está definida, puedes devolver el tipo de dato al que se
refiere.
En esta tarea, usa una función de Python para encontrar el tipo de dato de la
variable id_dispositivo. Luego, almacena el tipo de dato en otra variable
llamada tipo_id_dispositivo y muéstralo para observar el resultado.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [2]:
# Asigna a la variable `id_dispositivo` el ID del dispositivo al que solo los usuarios especificados
pueden acceder

id_dispositivo = "72e08x0"

# Asigna a `tipo_id_dispositivo` el tipo de dato de `id_dispositivo`

tipo_id_dispositivo = type(id_dispositivo)

# Muestra `tipo_id_dispositivo`

print(tipo_id_dispositivo)

<class 'str'>
Pista 1
Pista 2
Pista 3
Pregunta 1
A partir del resultado anterior, ¿qué observas acerca del tipo de dato de id_dispositivo?
El resultado anterior muestra que el tipo de dato de id_dispositivo es str. Eso significa
que id_dispositivo almacena un valor de cadena.
Tarea 3
A medida que continúas con tu trabajo, te dan una lista de nombres de usuario de los usuarios que
tienen permitido acceder al dispositivo. Los nombres de usuario con este acceso
son "madebowa", "jnguyen", "tbecker", "nhersh" y "redwards".
Para esta tarea, crea una variable llamada lista_usuarios. Luego, crea una lista con los nombres de
usuario aprobados y asígnala a esta variable.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [3]:

# Asigna `lista_usuarios` a la lista de nombres de usuario a los que se les permite acceder al
dispositivo

lista_usuarios = ["madebowa", "jnguyen", "tbecker", "nhersh", "redwards"]

# Muestra `lista_usuarios`

print(lista_usuarios)

['madebowa', 'jnguyen', 'tbecker', 'nhersh', 'redwards']


Pista 1
Pista 2
Pista 3
Tarea 4
Para esta tarea, busca el tipo de dato de lista_usuarios. Almacena el tipo en una variable
llamada tipo_lista_usuarios y muéstralo para observar el resultado.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [4]:
# Asigna `lista_usuarios` a la lista de nombres de usuario a los que se les permite acceder al
dispositivo

lista_usuarios = ["madebowa", "jnguyen", "tbecker", "nhersh", "redwards"]

# Asigna `tipo_lista_usuarios` al tipo de dato de `lista_usuarios`

tipo_lista_usuarios = type(lista_usuarios)

# Muestra `tipo_lista_usuarios`

print(tipo_lista_usuarios)

<class 'list'>
Pista 1
Pista 2
Pista 3
Pregunta 2
A partir del resultado anterior, ¿qué observas acerca del tipo de dato de lista_usuarios?
El resultado anterior muestra que el tipo de dato de lista_usuarios es list. Eso significa
que lista_usuarios almacena una lista.
Tarea 5
Ahora, supongamos que te avisan de que la lista anterior no está actualizada y de que hay otro
empleado que ahora tiene acceso al dispositivo. Te dan la siguiente lista actualizada de nombres
de usuario con acceso, incluido el empleado
nuevo: "madebowa", "jnguyen", "tbecker", "nhersh", "redwards" y "lpope".
Para esta tarea, reasigna la lista nueva a la variable lista_usuarios. Ejecuta el código para mostrar
la lista antes y después de la actualización para observar la diferencia.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [5]:

# Asigna `lista_usuarios` a la lista de nombres de usuario a los que se les permite acceder al
dispositivo

lista_usuarios = ["madebowa", "jnguyen", "tbecker", "nhersh", "redwards"]

# Muestra `lista_usuarios`

print(lista_usuarios)

# Asigna a `lista_usuarios` la lista actualizada de nombres de usuario a los que se les permite
acceder al dispositivo

lista_usuarios = ["madebowa", "jnguyen", "tbecker", "nhersh", "redwards", "lpope"]

# Muestra `lista_usuarios`

print(lista_usuarios)
['madebowa', 'jnguyen', 'tbecker', 'nhersh', 'redwards']
['madebowa', 'jnguyen', 'tbecker', 'nhersh', 'redwards', 'lpope']
Pista 1
Pista 2
Pregunta 3
A partir del resultado anterior, ¿qué observas acerca del contenido de lista_usuarios?
El resultado anterior muestra que el contenido de lista_usuarios se actualizó después de que se
reasignó la lista nueva a la variable.
La primera llamada print() da como resultado el contenido original de la lista. La segunda
llamada print() da como resultado el contenido actualizado, que incluye el nombre de usuario
recién agregado, "lpope".
Tarea 6
Para esta tarea, define una variable llamada max_inicios_sesion que represente el número máximo
de intentos de inicio de sesión permitidos por usuario. Almacena el valor 3 en esta variable.
Luego, almacena el tipo de dato en otra variable llamada tipo_max_inicios_sesion y muéstralo
para observar el resultado.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [6]:

# Asigna a `max_inicios_sesion` el valor 3

max_inicios_sesion = 3

# Asigna a `tipo_max_inicios_sesion` el tipo de dato de `max_inicios_sesion`

tipo_max_inicios_sesion = type(max_inicios_sesion)

# Muestra `tipo_max_inicios_sesion`

print(tipo_max_inicios_sesion)

<class 'int'>
Pista 1
Pista 2
Pista 3
Pregunta 4
A partir del resultado anterior, ¿qué observas acerca del tipo de dato de max_inicios_sesion?
El resultado anterior muestra que el tipo de dato de max_inicios_sesion es int. Eso significa
que max_inicios_sesion almacena un valor entero.
Tarea 7
En esta tarea, define una variable llamada intentos_inicio_sesion que represente el número actual
de intentos de inicio de sesión realizados por un usuario. Almacena el valor 2 en esta variable.
Luego, almacena el tipo de dato intentos_inicio_sesion' en una variable
llamadatipo_intentos_inicio_sesion` y, a continuación, imprímelo para observar el resultado.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [2]:
# Asigna `intentos_inicio_sesion` al valor 2

intentos_inicio_sesion = 2

# Asigna a `tipo_intentos_inicio_sesion` el tipo de dato de `intentos_inicio_sesion`

tipo_intentos_inicio_sesion = type(intentos_inicio_sesion)

# Muestra `tipo_intentos_inicio_sesion`

print(tipo_intentos_inicio_sesion)

<class 'int'>
Pista 1
Pista 2
Pista 3
Pregunta 5
A partir del resultado anterior, ¿qué observas acerca del tipo de dato
de tipo_intentos_inicio_sesion?
El resultado anterior muestra que el tipo de dato de tipo_intentos_inicio_sesion es int. Eso
significa que tipo_intentos_inicio_sesion almacena un valor entero.
Tarea 8
En esta tarea, determinarás el valor booleano que representa si el número actual de intentos de
inicio de sesión que realizó un usuario es menor o igual al número máximo de intentos de inicio de
sesión permitidos.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [8]:

# Asigna a `max_inicios_sesion` el valor 3

max_inicios_sesion = 3

# Asigna `intentos_inicio_sesion` al valor 2

intentos_inicio_sesion = 2

# Determina si el número actual de intentos de inicio de sesión que realizó un usuario es menor o
igual al número máximo de intentos de inicio de sesión permitidos,
# y muestra el valor booleano resultante

print(intentos_inicio_sesion <= max_inicios_sesion)

Verdadero
Pista 1
Pista 2
Pregunta 6
¿Cuál es el resultado? ¿Qué significa esto?
El resultado anterior es Verdadero, lo que indica que intentos_inicio_sesion es menor o igual
que max_inicios_sesion. En otras palabras, el número actual de intentos que el usuario realizó para
iniciar sesión aún no excedió el número máximo de intentos permitidos.
Tarea 9
Este código continúa verificando el valor booleano de si max_inicios_sesion es menor o igual
que intentos_inicio_sesion. En esta tarea, reasigna otros valores a intentos_inicio_sesion. Observa
cómo cambia el resultado.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [9]:

# Asigna a `max_inicios_sesion` el valor 3

max_inicios_sesion = 3

# Asigna `intentos_inicio_sesion` a un valor específico

intentos_inicio_sesion = 4

# Determina si el número actual de intentos de inicio de sesión que realizó un usuario es menor o
igual al número máximo de intentos de inicio de sesión permitidos,
# y muestra el valor booleano resultante

print(intentos_inicio_sesion <= max_inicios_sesion)

Falso
Pista 1
Pregunta 7
A partir de los diferentes valores que asignaste a intentos_inicio_sesion, ¿qué observaste acerca
del resultado?
El valor booleano en el resultado cambia según el valor asignado a intentos_inicio_sesion. Por
ejemplo, cuando intentos_inicio_sesion se asigna a 4, el resultado es Falso, lo que indica
que intentos_inicio_sesion no es menor o igual que max_inicios_sesion. En otras palabras, el
número actual de intentos que el usuario realizó para iniciar sesión excedió el número máximo de
intentos permitidos.
Tarea 10
Por último, también puedes asignar un valor booleano de Verdadero o Falso a una variable.
En esta tarea, crearás una variable llamada estado_inicio_sesion, que es un valor booleano que
representa si un usuario está conectado. Asigna Falso a esta variable, almacena el tipo de dato en
una variable llamada tipo_estado_inicio_sesion y muéstrala.
Asegúrate de reemplazar cada ## TU CÓDIGO AQUÍ ### con tu propio código antes de ejecutar
la siguiente celda.
In [10]:

# Asigna a `estado_inicio_sesion` el valor booleano `Falso`

estado_inicio_sesion = Falso

# Asigna a `tipo_estado_inicio_sesion` el tipo de dato de `estado_inicio_sesion`


tipo_estado_inicio_sesion = type(estado_inicio_sesion)

# Muestra `tipo_estado_inicio_sesion`

print(tipo_estado_inicio_sesion)

<class 'bool'>
Pista 1
Pista 2
Pregunta 8
A partir del resultado anterior, ¿qué observas acerca del tipo de dato de estado_inicio_sesion?
El resultado anterior muestra que el tipo de dato de estado_inicio_sesion es bool. Eso significa
que estado_inicio_sesion almacena un valor booleano.
Conclusión
¿Qué conclusiones clave obtuviste de este laboratorio?
— Hay muchos operadores útiles en Python que te ayudan a trabajar con variables. — El operador
de asignación = te permite asignar o reasignar un valor específico a una variable. — El operador
de comparación <= te permite comparar el valor de una variable con el valor de otra. — La
función type() en Python te ayuda a determinar el tipo de dato de un objeto. — Si le indicas una
variable a type(), mostrará el tipo de dato del valor almacenado en la variable. — La
función print() en Python te permite mostrar información. — Puede tomar un valor directamente,
una variable que almacena un valor o una comparación entre variables que se evalúa a un valor
booleano.
F

Antes hablamos sobre cómo almacenar distintos tipos de datos en variables.


Ahora vamos a empezar a adentrarnos en el concepto de automatización
para crear acciones emocionantes con código.
Automatizar es usar tecnología
para reducir la actividad humana y manual destinada a tareas comunes y repetitivas.
Permite que las computadoras realicen estas tareas por nosotros
para que podamos dedicar más tiempo a otras actividades.
Las sentencias condicionales son importantes en la automatización.
Una sentencia condicional es una sentencia que evalúa el código
para determinar si cumple un conjunto específico de condiciones.
La palabra clave “if” es importante aquí.
La palabra “if” empieza una sentencia condicional.
Reproduce el video desde ::52 y sigue la transcripción0:52
Luego indicamos la condición que debe cumplirse
y qué pasa si se cumple.
Usamos sentencias if a diario.
Por ejemplo,
si hace frío afuera, nos abrigamos.
O si está lloviendo, salimos con paraguas.
Las sentencias if se estructuran con la condición que queremos evaluar
y la acción que Python realizará si se cumple la condición.
Reproduce el video desde :1:22 y sigue la transcripción1:22
Python siempre evalúa si la condición es verdadera o falsa.
Si es verdadera, realiza la acción específica.
Veamos un ejemplo.
Le pedimos a Python que imprima el mensaje “Account locked”
cuando el inicio de sesión falle más de cinco veces.
La palabra clave if le indica a Python que empiece una sentencia condicional.
Reproduce el video desde :1:47 y sigue la transcripción1:47
Después, indicamos la condición que queremos verificar.
Reproduce el video desde :1:52 y sigue la transcripción1:52
En este caso,
verificamos si el usuario
ha intentado iniciar sesión más de cinco veces.
Observa que usamos una variable llamada failed_attempts.
En el código completo,
habremos asignado un valor a la variable antes de la sentencia if.
Después de esta condición, siempre colocamos dos puntos.
Estos indican que lo que sigue
es lo que queremos que suceda si se cumple la condición.
En este caso,
si el usuario tiene más de cinco intentos fallidos,
imprime el mensaje “Account locked”, o cuenta bloqueada.
Reproduce el video desde :2:30 y sigue la transcripción2:30
En Python, este mensaje siempre debe tener sangría
con al menos un espacio para ejecutarse solo si la condición es verdadera.
Reproduce el video desde :2:41 y sigue la transcripción2:41
Esta primera línea suele denominarse encabezado.
Y la llamada a las acciones que pasan si la condición se cumple, el cuerpo.
Esta condición se basó en una variable siendo mayor que un número específico,
pero podemos definir nuestra condición usando una variedad de operadores.
Por ejemplo, también podemos verificar si algo es “menor que” un valor indicado,
o podemos ver si es “mayor o igual que”,
o bien “menor o igual que” lo que indiquemos.
También podemos comparar si algo es “igual a” un valor.
Al hacer esto en una condicional, necesitamos usar una sintaxis especial.
No es un solo signo de igual, sino un doble signo de igual.
El signo de doble igual se suele usar en sentencias condicionales.
El signo == evalúa si dos objetos coinciden.
Asigna el valor booleano true, si coinciden o false, si no coinciden.
Reproduce el video desde :3:47 y sigue la transcripción3:47
Hay un operador más que debemos ver.
Un signo de exclamación con un signo de igual es “no igual a”.
Reproduce el video desde :4: y sigue la transcripción4:00
Este operador para “no igual a” evalúa si dos objetos son diferentes.
Asigna el valor booleano true si no coinciden y false si coinciden.
Reproduce el video desde :4:13 y sigue la transcripción4:13
Analicemos un ejemplo con el signo ==.
Nos centraremos en un ejemplo que imprime el mensaje “Updates needed”
cuando se está ejecutando un sistema operativo determinado.
Aquí creamos una condición que verifica si el SO de un dispositivo
coincide con una cadena específica que identifica el SO.
Reproduce el video desde :4:36 y sigue la transcripción4:36
Para hacer esto,
tendremos que usar el signo == en la condición.
Si coincide, el programa imprimirá el mensaje “Updates needed”.
Reproduce el video desde :4:48 y sigue la transcripción4:48
La variable operating_system está a la izquierda del signo ==.
La cadena “OS 2” está a la derecha.
Reproduce el video desde :4:57 y sigue la transcripción4:57
Si la condición se evalúa como true,
realiza la acción sangrada en la siguiente línea de código.
Aquí, si operating_system es OS 2, se imprimirá el mensaje “Updates needed”.
Si no lo es, el mensaje no se imprimirá.
Reproduce el video desde :5:16 y sigue la transcripción5:16
Observa que esta línea tiene sangría.
Esto le indica a Python que la tarea depende de si el resultado es true.
Reproduce el video desde :5:26 y sigue la transcripción5:26
Escribamos un código que incorpore esta condicional y obtengamos los resultados.
Reproduce el video desde :5:33 y sigue la transcripción5:33
Antes de escribirla, asignamos un valor a la variable operating_system.
El valor que indicaremos será el mismo SO que buscaremos en la condicional.
Reproduce el video desde :5:47 y sigue la transcripción5:47
Luego escribimos la condición de la sentencia if y usamos el signo ==
para verificar si la variable operating_system equivale a OS 2.
Reproduce el video desde :6:1 y sigue la transcripción6:01
Escribimos la acción que se ejecutará si la condición de la línea anterior
se evalúa como true.
Le indicamos a Python que imprima el mensaje “Updates needed”.
Definimos la variable operating_system como OS 2,
así que la sentencia print se ejecutará.
Muy bien, ejecutemos el código.
Reproduce el video desde :6:25 y sigue la transcripción6:25
Como era de esperar, se imprimió “updates needed”
porque el valor asignado a la variable operating_system
era igual a OS 2.
Reproduce el video desde :6:35 y sigue la transcripción6:35
A veces,
queremos que la sentencia condicional ejecute otro grupo de instrucciones
si no se cumple la primera condición.
En el ejemplo,
si no es true, significa que el SO del dispositivo no es OS 2.
Reproduce el video desde :6:53 y sigue la transcripción6:53
Debemos agregar la palabra clave “else” a las sentencias condicionales aquí.
La palabra “else” precede a una sección de código que solo evalúa
si todas las condiciones precedentes en la sentencia condicional son false.
Reproduce el video desde :7:10 y sigue la transcripción7:10
Las sentencias else siempre siguen una sentencia if
y terminan con dos puntos.
Usemos la condicional anterior y agreguémosle una sentencia else.
Incluimos la misma sentencia if,
pero esta vez el valor de la variable operating_system
es otro sistema operativo, en este caso, OS 3.
Reproduce el video desde :7:33 y sigue la transcripción7:33
Como esto no coincide con el valor de la condición de la sentencia if,
no se imprime el mensaje “updates needed”.
Reproduce el video desde :7:43 y sigue la transcripción7:43
Pero podemos agregar una sentencia else e indicarle que haga otra cosa.
Escribimos la palabra clave else y dos puntos.
Luego sangramos la siguiente línea
e indicamos que imprima el mensaje “No updates needed”.
Al ejecutar este código, se procesa la sentencia else después de la if.
Reproduce el video desde :8:7 y sigue la transcripción8:07
Como la sentencia if se evalúa como false,
pasará a la sentencia else.
Reproduce el video desde :8:16 y sigue la transcripción8:16
Probemos.
Reproduce el video desde :8:19 y sigue la transcripción8:19
Como se esperaba, solo se imprime el mensaje “No updates needed”.
Reproduce el video desde :8:25 y sigue la transcripción8:25
¡Buen trabajo!
Vimos cómo usar if y cómo usar else.
Con las sentencias condicionales, incorporas lógica al código.

Antes hablamos sobre cómo almacenar distintos tipos de datos en variables.


Ahora vamos a empezar a adentrarnos en el concepto de automatización
para crear acciones emocionantes con código.
Automatizar es usar tecnología
para reducir la actividad humana y manual destinada a tareas comunes y repetitivas.
Permite que las computadoras realicen estas tareas por nosotros
para que podamos dedicar más tiempo a otras actividades.
Las sentencias condicionales son importantes en la automatización.
Una sentencia condicional es una sentencia que evalúa el código
para determinar si cumple un conjunto específico de condiciones.
La palabra clave “if” es importante aquí.
La palabra “if” empieza una sentencia condicional.
Reproduce el video desde ::52 y sigue la transcripción0:52
Luego indicamos la condición que debe cumplirse
y qué pasa si se cumple.
Usamos sentencias if a diario.
Por ejemplo,
si hace frío afuera, nos abrigamos.
O si está lloviendo, salimos con paraguas.
Las sentencias if se estructuran con la condición que queremos evaluar
y la acción que Python realizará si se cumple la condición.
Reproduce el video desde :1:22 y sigue la transcripción1:22
Python siempre evalúa si la condición es verdadera o falsa.
Si es verdadera, realiza la acción específica.
Veamos un ejemplo.
Le pedimos a Python que imprima el mensaje “Account locked”
cuando el inicio de sesión falle más de cinco veces.
La palabra clave if le indica a Python que empiece una sentencia condicional.
Reproduce el video desde :1:47 y sigue la transcripción1:47
Después, indicamos la condición que queremos verificar.
Reproduce el video desde :1:52 y sigue la transcripción1:52
En este caso,
verificamos si el usuario
ha intentado iniciar sesión más de cinco veces.
Observa que usamos una variable llamada failed_attempts.
En el código completo,
habremos asignado un valor a la variable antes de la sentencia if.
Después de esta condición, siempre colocamos dos puntos.
Estos indican que lo que sigue
es lo que queremos que suceda si se cumple la condición.
En este caso,
si el usuario tiene más de cinco intentos fallidos,
imprime el mensaje “Account locked”, o cuenta bloqueada.
Reproduce el video desde :2:30 y sigue la transcripción2:30
En Python, este mensaje siempre debe tener sangría
con al menos un espacio para ejecutarse solo si la condición es verdadera.
Reproduce el video desde :2:41 y sigue la transcripción2:41
Esta primera línea suele denominarse encabezado.
Y la llamada a las acciones que pasan si la condición se cumple, el cuerpo.
Esta condición se basó en una variable siendo mayor que un número específico,
pero podemos definir nuestra condición usando una variedad de operadores.
Por ejemplo, también podemos verificar si algo es “menor que” un valor indicado,
o podemos ver si es “mayor o igual que”,
o bien “menor o igual que” lo que indiquemos.
También podemos comparar si algo es “igual a” un valor.
Al hacer esto en una condicional, necesitamos usar una sintaxis especial.
No es un solo signo de igual, sino un doble signo de igual.
El signo de doble igual se suele usar en sentencias condicionales.
El signo == evalúa si dos objetos coinciden.
Asigna el valor booleano true, si coinciden o false, si no coinciden.
Reproduce el video desde :3:47 y sigue la transcripción3:47
Hay un operador más que debemos ver.
Un signo de exclamación con un signo de igual es “no igual a”.
Reproduce el video desde :4: y sigue la transcripción4:00
Este operador para “no igual a” evalúa si dos objetos son diferentes.
Asigna el valor booleano true si no coinciden y false si coinciden.
Reproduce el video desde :4:13 y sigue la transcripción4:13
Analicemos un ejemplo con el signo ==.
Nos centraremos en un ejemplo que imprime el mensaje “Updates needed”
cuando se está ejecutando un sistema operativo determinado.
Aquí creamos una condición que verifica si el SO de un dispositivo
coincide con una cadena específica que identifica el SO.
Reproduce el video desde :4:36 y sigue la transcripción4:36
Para hacer esto,
tendremos que usar el signo == en la condición.
Si coincide, el programa imprimirá el mensaje “Updates needed”.
Reproduce el video desde :4:48 y sigue la transcripción4:48
La variable operating_system está a la izquierda del signo ==.
La cadena “OS 2” está a la derecha.
Reproduce el video desde :4:57 y sigue la transcripción4:57
Si la condición se evalúa como true,
realiza la acción sangrada en la siguiente línea de código.
Aquí, si operating_system es OS 2, se imprimirá el mensaje “Updates needed”.
Si no lo es, el mensaje no se imprimirá.
Reproduce el video desde :5:16 y sigue la transcripción5:16
Observa que esta línea tiene sangría.
Esto le indica a Python que la tarea depende de si el resultado es true.
Reproduce el video desde :5:26 y sigue la transcripción5:26
Escribamos un código que incorpore esta condicional y obtengamos los resultados.
Reproduce el video desde :5:33 y sigue la transcripción5:33
Antes de escribirla, asignamos un valor a la variable operating_system.
El valor que indicaremos será el mismo SO que buscaremos en la condicional.
Reproduce el video desde :5:47 y sigue la transcripción5:47
Luego escribimos la condición de la sentencia if y usamos el signo ==
para verificar si la variable operating_system equivale a OS 2.
Reproduce el video desde :6:1 y sigue la transcripción6:01
Escribimos la acción que se ejecutará si la condición de la línea anterior
se evalúa como true.
Le indicamos a Python que imprima el mensaje “Updates needed”.
Definimos la variable operating_system como OS 2,
así que la sentencia print se ejecutará.
Muy bien, ejecutemos el código.
Reproduce el video desde :6:25 y sigue la transcripción6:25
Como era de esperar, se imprimió “updates needed”
porque el valor asignado a la variable operating_system
era igual a OS 2.
Reproduce el video desde :6:35 y sigue la transcripción6:35
A veces,
queremos que la sentencia condicional ejecute otro grupo de instrucciones
si no se cumple la primera condición.
En el ejemplo,
si no es true, significa que el SO del dispositivo no es OS 2.
Reproduce el video desde :6:53 y sigue la transcripción6:53
Debemos agregar la palabra clave “else” a las sentencias condicionales aquí.
La palabra “else” precede a una sección de código que solo evalúa
si todas las condiciones precedentes en la sentencia condicional son false.
Reproduce el video desde :7:10 y sigue la transcripción7:10
Las sentencias else siempre siguen una sentencia if
y terminan con dos puntos.
Usemos la condicional anterior y agreguémosle una sentencia else.
Incluimos la misma sentencia if,
pero esta vez el valor de la variable operating_system
es otro sistema operativo, en este caso, OS 3.
Reproduce el video desde :7:33 y sigue la transcripción7:33
Como esto no coincide con el valor de la condición de la sentencia if,
no se imprime el mensaje “updates needed”.
Reproduce el video desde :7:43 y sigue la transcripción7:43
Pero podemos agregar una sentencia else e indicarle que haga otra cosa.
Escribimos la palabra clave else y dos puntos.
Luego sangramos la siguiente línea
e indicamos que imprima el mensaje “No updates needed”.
Al ejecutar este código, se procesa la sentencia else después de la if.
Reproduce el video desde :8:7 y sigue la transcripción8:07
Como la sentencia if se evalúa como false,
pasará a la sentencia else.
Reproduce el video desde :8:16 y sigue la transcripción8:16
Probemos.
Reproduce el video desde :8:19 y sigue la transcripción8:19
Como se esperaba, solo se imprime el mensaje “No updates needed”.
Reproduce el video desde :8:25 y sigue la transcripción8:25
¡Buen trabajo!
Vimos cómo usar if y cómo usar else.
Con las sentencias condicionales, incorporas lógica al código.

Anteriormente, exploraste las sentencias condicionales y su utilidad en la automatización de tareas


en Python. Hasta ahora, te centraste en las palabras clave if y else. En esta lección, las repasarás y
aprenderás otra palabra clave, elif. También, aprenderás cómo puedes aplicar los operadores and,
or, y not a tus condiciones.
Cómo funcionan las sentencias condicionales
Una sentencia condicional es una sentencia que evalúa código para determinar si cumple con un
conjunto específico de condiciones. Cuando una condición se cumple, se evalúa como un valor
booleano True (verdadero) y realiza las acciones especificadas. Cuando la condición no se
cumple, se evalúa como un valor booleano False (falso) y no realiza las acciones especificadas.
En las sentencias condicionales, la condición suele basarse en la comparación de dos valores. Esta
tabla resume los operadores de comparación más comunes utilizados para comparar valores
numéricos.
operador us0
> mayor que
< menor que
>= mayor o igual que
<= menor o igual que
== igual que
!= no igual que
Nota: Los operadores igual a (==) y no igual que (!=) también se usan habitualmente para
comparar datos de cadena.
Sentencias if
La palabra clave if inicia una sentencia condicional. Es un componente necesario de cualquier
sentencia condicional. En el siguiente ejemplo, if comienza una sentencia que le indica a Python
que imprima el mensaje "OK" cuando el código de estado de la respuesta HTTP sea igual a 200:
if status == 200:
print("OK")
Este código consiste en un encabezado y un cuerpo.
Encabezado de una sentencia if
The first line of this code is the header. In the header of an if statement, the keyword if is followed
by the condition. Here, the condition is that the status variable is equal to a value of 200. The
condition can be placed in parentheses:
La primera línea de este código es el encabezado. En el encabezado de una sentencia if, la palabra
clave if va seguida de la condición. Aquí, la condición es que la variable status sea igual a un valor
de 200. La condición se puede colocar entre paréntesis:
if (status == 200):
print("OK")
En casos como este, es opcional colocar paréntesis alrededor de las condiciones en Python. Puedes
optar por incluirlos si te ayuda a mejorar la legibilidad del código. Sin embargo, esta condición
será procesada de la misma manera si se escribe sin paréntesis.
En otras situaciones, debido a que Python evalúa primero las condiciones entre paréntesis, estos
pueden afectar la manera en que Python procesa las condiciones. Leerás más sobre estos casos en
la sección de esta lectura sobre not.
Nota: Siempre debes colocar dos puntos (:) al final del encabezado. Sin esta sintaxis, el código
generará un error.
Cuerpo de una sentencia if
Después del encabezado de una sentencia if, viene el cuerpo de la sentencia if. Esto le indica a
Python qué acción o acciones realizar cuando la condición se evalúa como True. En este ejemplo,
hay solo una acción, que consiste en imprimir "OK" en la pantalla. En otros casos, puede haber
más líneas de código con acciones adicionales.
Nota: Para que el cuerpo de la sentencia if se ejecute según lo previsto, debe tener más sangría que
el encabezado. Además, si hay varias líneas de código dentro del cuerpo, todas deben tener la
misma sangría.
Condicionales continuos con else y elif
En el ejemplo anterior, si el código de respuesta de estado HTTP no fuera igual a 200, la
condición se evaluaría como False y Python continuaría con el resto del programa. Sin embargo,
también es posible especificar acciones alternativas con else y elif.
Sentencias else
La palabra clave else precede a una sección de código que solo se evalúa cuando todas las
condiciones que la preceden dentro de la sentencia condicional se evalúan como False.
En el siguiente ejemplo, cuando el código de estado de respuesta HTTP no es igual a 200,
imprime un mensaje alternativo de "check other status":
if status == 200:
print("OK")
else:
print("check other status")
Nota: Al igual que con if, se requieren dos puntos (:) después de else, y el cuerpo que sigue al
encabezado else está sangrado (o sea, tiene sangría).
Sentencias elif
En ocasiones, es posible que tengas varias acciones alternativas que dependen de nuevas
condiciones. En ese caso, puedes usar elif. La palabra clave elif precede a una condición que solo
se evalúa cuando las condiciones anteriores se evalúan como False. A diferencia de else, puede
haber varias sentencias elif después de if.
Por ejemplo, puedes optar por imprimir un mensaje si el código de estado de respuesta HTTP es
200, un mensaje si es 400 y otro si es 500. El siguiente código demuestra cómo puedes utilizar elif
para esto:
if status == 200:
print("OK")
elif status == 400:
print("Bad Request")
elif status == 500:
print("Internal Server Error")
Python verificará primero si el valor de status es 200, y si se evalúa como False, pasará a la
primera sentencia elif. Allí, verificará si el valor de status es 400. Si es True, imprimirá "Bad
Request", pero si es False, pasará a la siguiente sentencia elif.
Si deseas que el código imprima otro mensaje cuando todas las condiciones se evalúen como
False, puedes incorporar else después del último elif. En este ejemplo, si llega a la sentencia else,
imprime un mensaje para verificar el estado:
if status == 200:
print("OK")
elif status == 400:
print("Bad Request")
elif status == 500:
print("Internal Server Error")
else:
print("check other status")
Al igual que con if y else, es importante colocar dos puntos (:) después del encabezado elif y
sangrar el código que sigue a este encabezado.
Nota: Python procesa varias sentencias elif de manera diferente a varias sentencias if. Cuando
llega a una sentencia elif que se evalúa como True, no verificará las siguientes sentencias elif. Por
otro lado, Python ejecutará todas las sentencias if.
Operadores lógicos para múltiples condiciones
En algunos casos, puedes optar por que Python realice una acción basada en una condición más
compleja. Podrías requerir que dos condiciones se evalúen como True. O bien, que solo una de las
dos condiciones se evalúe como True. O puedes optar por que Python ejecute una acción cuando
una condición se evalúe como False. En estos casos se pueden utilizar los operadores and, or, y
not.
and
El operador and requiere que las dos condiciones a ambos lados del operador se evalúen como
True. Por ejemplo, todos los códigos de estado de respuesta HTTP entre 200 y 226 se refieren a
respuestas correctas. Puedes usar and para unir una condición que sea mayor o igual a 200 con
otra condición que sea menor o igual a 226:
if status >= 200 and status <= 226:
print("successful response")
Si ambas condiciones son True, se imprimirá el mensaje "successful response".
or
El operador or solo requiere que una de las condiciones a ambos lados del operador se evalúe
como True. Por ejemplo, tanto un código de estado 100 como un código de estado 102 son
respuestas informativas. Usando or, podrías pedirle a Python que imprima un mensaje de
"informational response" cuando el código sea 100 o 102:
if status == 100 or status == 102:
print("informational response")
Solo es necesario que se cumpla una de estas condiciones para que Python imprima el mensaje.
not
El operador not niega una condición dada de forma que se evalúe a False si la condición es True y
a True si es False. Por ejemplo, si deseas indicar que Python debe verificar el código de estado
cuando se trata de algo fuera del rango correcto, puedes usar not:
if not(status >= 200 and status <= 226):
print("check status")
Python primero verifica si el valor de estado es mayor o igual a 200 y menor o igual a 226, y
luego, debido al operador not, lo invierte. Esto significa que imprimirá el mensaje si status es
menor que 200 o mayor que 226.
Nota: En este caso, los paréntesis son necesarios para que el código aplique not a ambas
condiciones. Python evaluará primero las condiciones dentro de los paréntesis. Esto significa que
primero evaluará las condiciones a cada lado del operador and y luego aplicará not a ambas.
Conclusiones clave
Es importante que los analistas de seguridad se familiaricen con las sentencias condicionales.
Estas requieren la palabra clave if. Además, puedes usar else y elif cuando trabajes con
condicionales para especificar acciones adicionales. Los operadores lógicos and, or, y not también
son útiles al escribir condicionales.

También podría gustarte