Transcripciones
1. Promoción del curso: ¿Te interesa
tanto la ciberseguridad la programación Python Si la respuesta es sí, has venido al lugar correcto. Hola, mi nombre es Alex. Me gustaría darle la bienvenida a mi muy especial curso de programación
Python para ciberseguridad Ahora bien, este es un curso que he
diseñado específicamente
tanto para profesionales como para entusiastas de la ciberseguridad A quienes les gustaría aprender
sobre la programación Python, pero de una manera que sea
relevante para la ciberseguridad Entonces, ¿qué
significa exactamente un curso de Python para ciberseguridad? Simplemente
quiero que todo el
código y los programas y herramientas que vamos
a construir juntos en este curso estarán
relacionados con la ciberseguridad Ahora bien, si nunca antes habías escrito la tierra del código en
tu vida, si eres completamente nuevo el mundo de la programación, no te
preocupes. Te voy a enseñar todos
los fundamentos de la programación. Y por supuesto,
te enseñaré lo esencial de Python, como variables
y tipos de datos, flujo de
control y
bucles, funciones, estructuras de
datos, programación
orientada a objetos, manejo de
archivos, y mucho más. En el camino, también
vamos a construir juntos diferentes tipos de herramientas de
ciberseguridad, como una herramienta de verificación de seguridad de contraseña
, una herramienta auditoría y una herramienta de
cifrado Y finalmente, para
el proyecto de clase, vamos a construir juntos
un sistema de registro de usuarios. También debo mencionar
que este curso
vendrá con toneladas de
ejercicios de codificación de pruebas para ponerte a prueba para desafiarte y asegurarte de que
estás en el camino correcto Entonces, si estás buscando agregar la habilidad Python a tu currículum, tal vez estés tratando de
obtener un ascenso o forjar una nueva trayectoria profesional, este curso, la
programación Python para ciberseguridad va
a ser perfecta para ti Entonces espero que hoy se registren
para el curso, y espero verle
en las sillas interiores.
2. Introducción a Python: Bienvenidos oficialmente
a los fundamentos de Python
para los profesionales de la ciberseguridad Mi nombre es Alex, y
voy a ser tu instructor. Ahora el propósito de este video es darte la bienvenida oficialmente al curso y además darte algunos punteros sobre la mejor
manera de tomarlo Entonces lo primero es lo primero, ¿de qué se trata
exactamente este curso? ¿A qué me refiero con Python
para la ciberseguridad? Bueno, todos los ejemplos, las pruebas, los retos,
los ejercicios de codificación,
todos ellos, bueno, mayoría de ellos se adaptarán proyectos
relevantes de
ciberseguridad Entonces, como ejemplo, estaremos escribiendo código sobre
cómo cifrar contraseñas,
hash contraseñas, crear cuentas de usuario, escanear puertos, cosas así Entonces, los tipos de proyectos
o herramientas o tareas que
normalmente realizarías en un
entorno de ciberseguridad real, los
vamos a hacer
uso en este curso Y por eso es un curso de Python
para ciberseguridad. Entonces, si eres un
profesional de la ciberseguridad y
quieres aprender un poco sobre Python que te
permita crear algunos
proyectos o herramientas relevantes de ciberseguridad, este curso va
a ser perfecto para También debo mencionar
que si nunca antes has escrito una línea de código en toda
tu vida, vas a entrar aquí
completamente ciego. No te preocupes, te
tengo cubierto. Voy a empezar
desde lo básico, y poco a poco
vamos a trabajar nuestro camino
hacia la redacción de algunos programas más
sofisticados. lo que el curso se divide aproximadamente en unas
diez secciones diferentes. Esto podría cambiar a medida que
modifique el curso y tal vez agregue o elimine
contenido. Todo depende. Pero vamos a empezar desde
el principio, ¿de acuerdo? ¿Qué es la programación? Vamos a escribir líneas de código muy
simples. Y luego al
final del curso, vamos a crearnos un
sistema de autenticación muy potente y también un verificador de contraseñas
muy, muy potente. Ese va a ser el
proyecto para este curso. Y te puedo garantizar que
si te enfocas en el curso, haces todos los
ejercicios, las pruebas, puedo garantizar que
al final de este curso, tendrás los conocimientos
requeridos para poder escribir algunos programas bastante buenos relacionados con la
ciberseguridad Ahora, quiero mencionar una cosa sobre la programación en general, y esto es especialmente si nunca antes
has escrito
una línea de código en toda
tu vida.
Va a tomar tiempo, ¿de acuerdo? Va a tomar
un tiempo antes de que
seas verdaderamente competente y fluido en el trabajo con
un lenguaje de programación Ahora, Python, en particular, es relativamente fácil en
comparación con los otros lenguajes de
programación que existen. Pero hasta Python
lleva tiempo, ¿de acuerdo? Así que no te frustres si al principio,
las primeras semanas, sigues luchando por escribir algunas líneas de código,
estás cometiendo errores. Es sólo natural. Piense en ello como si
estuviera tratando de aprender un lenguaje verbal real. A lo mejor estás tratando de
aprender a hablar, no sé, griego o finlandés o
sueco o lo que sea. No solo vas a
recogerlo de forma automática y muy rápida, ¿verdad?
Va a llevar tiempo. Podría tomar varios
meses, tal
vez incluso podría tomar hasta un año. Al principio,
podrás decir cosas
simples como
Buenos días. Mi nombre es Alex. Pero entonces para construir una frase completa
real, empezará a
tomar tiempo, ¿verdad? Tendrás que averiguar,
Bien, en este idioma, el adjetivo viene
antes del pronombre
o el sustantivo viene antes
del verbo, ya sabes, todo
ese tipo Lleva tiempo. Entonces,
al principio, cometerás
muchos errores. Podría llegar a ser frustrante, pero no te rindas, ¿de acuerdo? Te garantizo
que si te
enfocas, practicas tanto como puedas. Tú haces las pruebas y los retos que te he
brindado en este curso. Te garantizo que algún día, vas a
despertar y de repente darás cuenta de que aguanta un segundo, en realidad
me estoy poniendo bastante bueno programando con Python. Así que colgando ahí, es
sólo una parte del proceso. Toda la frustración desde
el principio, es sólo una parte del proceso. Colgando ahí, y
te prometo que serás recompensado. Ahora, algunas cosas más
para mencionar muy rápido, vamos a estar trabajando con una
plataforma en particular aquí llamada replet no te preocupes, no tienes que pagar por ello Es completamente gratuito. Tomaré sobre weblte un poco más tarde en videos posteriores Pero solo tenlo en mente.
Si estás trabajando con un Mac o Linux o Windows, podrás
tomar este curso. Y además, si te
encuentras con algún reto o
algo no está claro, siempre
puedes contactarme. Estaré más que
feliz de atenderte de cualquier manera que pueda. Así que una vez más, bienvenidos a los Fundamentos de Python para profesionales del
cibersecurt Espero que este curso les resulte muy informativo
y muy útil. Y es mi sincera esperanza y creo que para el
final de este curso, habrás aprendido
a programar con Python. Así que gracias una vez más por inscribirte. Y ahora comencemos.
3. Nota importante para trabajar con Python: Antes de comenzar
el curso propiamente dicho, hay algo sobre lo
que necesito llamar su atención. Esto es muy, muy importante. Cuando se trata de la
aplicación que
utilicé para crear este curso
en particular, esa aplicación
estaba repleta, ¿bien? Replt es esta plataforma
donde prácticamente puedes escribir y trabajar con cualquier tipo de código desde cualquier lenguaje de
programación Y claro,
Python funciona muy, muy bien en replate Así que inicialmente utilicé replate
para crear el curso. Entonces a lo largo de este curso, todo el código con el
que voy a estar trabajando se escribirá en la plataforma
replet La razón por la que elegí p fue porque cumplía
tres criterios principales. En primer lugar, era de uso
gratuito. En segundo lugar, es que es
bastante fácil de usar. Y luego, tercero, es una plataforma bastante poderosa que puede ejecutar
prácticamente cualquier tipo de código. Desafortunadamente, en
los últimos meses, han realizado algunos cambios
muy grandes en la plataforma de usuario. Y específicamente, lo han
hecho porque querían incorporar IA, lo cual
es comprensible. Por supuesto, estamos viviendo
en la era de la IA, y todas estas
plataformas, ya sabes, quieren parecer
muy modernas y, ya sabes, lo siguiente mejor y una
de las formas de hacerlo es simplemente incorporando
IA, lo cual está bien. Pero el propósito
de este curso es enseñarte los fundamentos
y los fundamentos de Python Entonces aún no necesitamos ayuda de IA. La IA es fantástica una
vez que ya
aprendiste a trabajar con Python. Y luego, por supuesto,
puedes usar la IA para atenderte. Pero como estamos aprendiendo Python por primera vez
como un principiante completo, eso no va a funcionar para nosotros. Entonces lo que he hecho es
que te voy a mostrar otras
dos alternativas para ejecutar tu código Python
en tu computadora. Ahora, de nuevo, no te preocupes, como dije antes,
este curso, todo el código que escribo
va a estar en plt, pero vas a estar escribiendo
tu propio código ya sea en código Thonny o Visual Studio Es el código lo que
importa, ¿de acuerdo? La plataforma donde
estás escribiendo el código no es lo más
importante, ¿de acuerdo? Hay tantas otras
plataformas por ahí. Lo más
importante es el código. Entonces en lugar de plt, bien, te
voy a mostrar
cómo trabajar con Thonny, que en realidad sería mi opción
recomendada para ti porque es extremadamente fácil de
instalar y es
extremadamente fácil de También es gratis, y
está disponible para Mac, para Linux para Windows. Entonces te mostraré cómo
instalar y luego
trabajar con Thonny Ahora bien, si por alguna razón, Thonny no funciona para ti, no
te gusta Thonny te
voy a dar una alternativa que
por supuesto será Visual Studio Code, es mucho más
potente
que Thonny,
pero también un poco más pero también Ahora, solo para
hacértelo saber, para poder trabajar con Visual Studio Code, si quieres ir
por este camino, vamos
a tener que instalar Python primero antes de poder trabajar
con Visual Studio Code. Si estás trabajando con Thonny, no
necesitas instalar
Python en tu computadora Otra vez, no te preocupes. Voy a guiarte
a través de
todo, ¿de acuerdo? En primer lugar, el siguiente video, te
mostraré cómo
instalar y trabajar con Thonny Y luego el siguiente
video después de eso, será cómo
puedes instalar y trabajar con
Visual Studio Code, yo, por
supuesto, también te mostraré cómo descargar e instalar
Python en tu computadora. Entonces sí me disculpo por
esta pequeña mezcla. Nuevamente, no tenía idea cuando creé este
curso inicialmente. No tenía idea de que la
gente repleta vamos a
seguir adelante y
renovar completamente la interfaz de usuario Entonces sí me disculpo por eso. Pero ojalá, que yo
te dé alternativas, dos alternativas distintas lo
van a suplir. Entonces, si tienes alguna
duda o alguna inquietud, no dudes en comunicarte conmigo. Estaré más que
feliz de atenderle. Puedes usar la función de
mensajería en la plataforma donde
estés tomando este curso, o también puedes comunicarte
conmigo en Alex en labsyba.com Ese es mi correo electrónico.
Puedes comunicarte conmigo y
pedirme
ayuda o preguntas, compartir tus inquietudes,
cualquier cosa que quieras saber o con lo que
necesites ayuda, pero más que feliz
de atenderte. Por lo que gracias por su
atención a este asunto. Y ahora, déjame
mostrarte cómo descargar
e instalar y trabajar con
la aplicación Thonny
4. Cómo usar atún: Entonces déjame mostrarte cómo
instalar y hacer uso de Thonny. Es muy posiblemente la interfaz de usuario
más sencilla, y es perfecta, especialmente si eres nuevo en el
mundo de Python. Entonces todo lo que necesitas hacer es
ir a thorny.org, ¿verdad? Y luego aquí mismo,
puedes descargar la versión para cualquier
sistema abierto en el que estés trabajando. Tenemos para Windows,
tenemos para Mac, Linux. Así que solo asegúrate de que
estás instalando o descargando la versión
correcta. Ya he descargado mío así que déjame
venir aquí y voy a abrir la
aplicación para que se ejecute ¿bien? Y voy a decir
instalar solo para mí, y luego dar click en siguiente. Acepto el acuerdo, haga clic en siguiente, haga clic en siguiente. Podemos crear un icono de escritorio, dar clic en siguiente, Instalar. Entonces ahí lo tienes.
Y así es simplemente como instalar Thonny en tu computadora. Ahora, déjame mostrarte exactamente cómo caminar con
esta aplicación. Es muy, muy, muy fácil. Esperemos a que se instale.
Bien, está instalado. Voy a dar click en terminar. Y ahora voy a
seguir adelante y ejecutar el programa. Y, bien, entonces
estoy en mi escritorio. Este es el atajo. Entonces voy a
seguir adelante y correr a Thonny. Y aquí mismo, por supuesto, se
puede cambiar el idioma, los ajustes iniciales, y así sucesivamente. Yo sólo me quedaré con esto tal como
están. Da clic en Vamos. Y ahí lo tienes. Entonces esto de aquí es básicamente
la interfaz para Thonny. De nuevo, es muy,
muy, muy fácil. Ahora, solo como un ejemplo
muy, muy rápido, déjame
mostrarte cómo funcionaría esto. Voy a seguir adelante, bien, y escribir impreso entre paréntesis, y luego un programa muy, muy sencillo,
hola mundo. Bien. Y ahora voy a ejecutar este
código en particular haciendo clic en el botón Ejecutar
aquí mismo o puedes presionar F cinco en tu teclado.
Voy a hacer click ahí. Y luego aquí abajo, se
puede ver que esta es la salida de mi código. Para que puedas, por supuesto, modificar la forma en que se ve la
interfaz. Puedes arrastrar la ventana de shell un poco más arriba si quisieras. Y también puedes
bajar aquí a las herramientas. Bien, puedes ir a opciones. Y entonces si quisieras, podrías ir al tema y a la fuente, y podrías cambiar
el tema, ¿verdad? Entonces, personalmente, siempre me gusta
ir con el tema oscuro. Pero claro, es
totalmente subjetivo. Si prefieres el tema ligero,
puedes quedarte con eso. Pero voy a ir
con el tema oscuro. Y claro,
también puedes cambiar el tamaño de fuente, la familia de fuentes de tu texto. Si lo prefieres, puedes hacerlo aquí
mismo, y eso es todo. Entonces, si quería guardar
este archivo en particular, bien, todo lo que
tendré que hacer es hacer clic en el
botón Guardar aquí mismo. Y entonces todo lo que
tendría que hacer es simplemente escribir el
nombre de este archivo, y voy a llamar a este
ejemplo, ¿de acuerdo? Y eso es todo. Por
lo que va a guardarlo automáticamente como un archivo Python. Y déjame guardar
esto en mi escritorio. Y voy a seguir adelante
ahora mismo, da clic en Guardar. Y ahí está la muestra en
PY es ahora el archivo Python. Y claro,
también podría crear un nuevo archivo
simplemente haciendo clic en el
botón escritor que dice Nuevo. Y luego
ahí mismo, de nuevo, tengo una nueva ventana para el nuevo código, y eso es prácticamente todo. Entonces es una interfaz muy, muy sencilla para
ejecutar código Python. Una pregunta que
podrías tener aquí es, ¿es posible poner la ventana de concha en
el lado derecho de la ventana principal? Desafortunadamente, a partir
del momento en que grabé este video, no, no es posible. Entonces eso, yo diría que es
probablemente el único inconveniente. Bien, pero en realidad
no es un gran problema. Thonny otra vez, es sumamente fácil. Ejecutaré la gran
mayoría del código Python, y no deberías
tener ningún problema trabajar con esta aplicación
en particular. Entonces así es más o menos cómo trabajar con la aplicación
Thonny Gracias por ver. Te
veré en la siguiente clase.
5. Cómo trabajar con el código visual de estudio: Mostrarte cómo puedes instalar
el código de Visual Studio. Ahora, lo que pasa con
Visual Studio Code es que
para poder trabajar con él, en realidad
necesitas instalar Python primero en tu computadora. Entonces primero lo primero,
ve a python.org, y puedes ir por aquí
para descargar y
puedes encontrar la versión
para Estoy en Windows, así que sólo voy a ir
con el Python 3.140 Y voy a
seguir adelante ahora mismo y simplemente guardar la aplicación. Está instalado. Entonces aquí mismo, voy a abrirlo
y simplemente instalarlo. Ahora, muy, muy
importante, ¿de acuerdo? Esta primera ventana de aquí, por favor marque estas
dos casillas, ¿de acuerdo? Así que usa privilegios de administrador
al instalar pi dot X. Y luego especialmente la ruta
add python.x2 ¿Bien? Quieres
marcar estas dos casillas, y ahora voy a
hacer clic en Instalar ahora, clic en S, y eso es
prácticamente todo lo que necesitas hacer. Al instalar Python
en tu computadora. Sólo voy a esperar a que
se instale esto. No debería tardar
demasiado, y ahí está. Bien, entonces voy a
dar click en Cerrar. Y ahora puedes pasar al código de
Visual Studio en
Visual studio.com Por aquí, encontrarás las diferentes versiones
para Visual Studio Code. Tenemos para Windows, tenemos para Mac. Y claro, también
tenemos para Linux también. Ahora, ya he descargado la aplicación Visual
Studio Code, así que está aquí mismo. Entonces voy a seguir adelante
ahora mismo e instalarlo. Entonces voy a
aceptar el acuerdo. Haga clic en Siguiente y, por supuesto, cree un icono de escritorio. Marcaré esa
casilla, haga clic en Siguiente, haga clic en Instalar.
Y ahí está. Nuevamente, esto no debería tardar
demasiado en instalarse normalmente
solo unos segundos. Y ahí está, Bien, así que voy a seguir adelante
ahora mismo, dar clic en Finalizar, y automáticamente,
debería lanzarse aquí mismo. Bien, entonces esto podría ser lo primero que veas. Si ves alguna otra ventana, creo que en la mayoría de los casos,
es porque
ya he instalado Visual
Studio Code antes. Normalmente, cuando
lo instalas por
primera vez, deberías verlo como
una ventana de IA o algo así.
Sólo ciérralo. Si tienes alguna otra
ventana aquí, simplemente
puedes dar click en Ventana
Don o Eito, ¿verdad Esto es simplemente lo que
estamos buscando. Estamos buscando, como, una ventana
en blanco aquí mismo. ¿Bien? Este es el punto de
partida. Entonces lo primero
que quieres hacer es que quieres ir aquí
a tus extensiones, y quieres instalar las extensiones de Python va
a estar aquí mismo, Python. Entonces voy a seguir adelante
ahora mismo, da clic en Instalar. Y ahí está. Entonces se
va a instalar. No debería tardar demasiado, solo unos segundos,
y ahí está. Por lo que se ha
instalado con éxito. De nuevo, voy a seguir
adelante ahora mismo, cerrar esta ventana, ¿no? Y ahora, si
quería ejecutar un código Python, todo lo que quiero hacer es
ir aquí a File. Bien, puedo dar click en Nuevo Archivo. Y como acabamos de
instalar la extensión Python, ahora
tenemos el enlace del
archivo Python aquí mismo. Así que voy a hacer click ahí, y ahora mira esto, ¿de acuerdo? Voy a escribir la impresión de código
muy simple. Hola mundo. ¿Bien? Ahora voy a seguir adelante ahora mismo y dar clic en este
botón para ejecutar el archivo. No obstante, debido a
que es la primera
vez que ejecutamos este archivo, aún no lo hemos
guardado. Tenemos que guardarlo antes que
nada, ¿de acuerdo? Tenemos que darle un nombre. Entonces voy a llamar a esto
simplemente prueba, ¿de acuerdo? Prueba, haz clic en Guardar. Y ahora puedes ver
que es test dot PY. Bien, así que aquí abajo, ¿verdad? Esta es la terminal y es
posible que tengas algún tipo de
mensaje de error diciéndote que, Oh, no podemos abrir este archivo, ya
sabes, lo que sea. Está bien. Simplemente vuelva de nuevo y
haga clic en el archivo Ejecutar Python. Y ahora se puede ver que en realidad
está funcionando. Se está ejecutando. Aquí
puedes ver hola mundo. De hecho, déjame seguir adelante, agregar otra línea
sólo para demostrarlo. Entonces voy a imprimir hola
y voy a decir, me gusta el código VS. Bien, sigamos adelante, volvamos a
ejecutar el programa. Y ahora aquí, se puede
ver que dice hola mundo, me gusta el código VS. Entonces aquí arriba, tendrás tu ventana principal donde
vas a escribir tu código,
tu interfaz de editor,
y luego
aquí abajo será tu terminal. Sin embargo, podemos modificar la
forma en que se ve la interfaz. Una cosa que me gusta
hacer normalmente, bien, sería ir por aquí, que podamos alternar la barra lateral
primaria. Voy a apagarlo, quitar la barra lateral primaria, así que ahora tenemos la interfaz de
usuario ocupando toda la ventana. No obstante, justo
aquí abajo terminal, voy a hacer click derecho y
voy a decir muévete a, y luego voy a moverlo
a la barra lateral secundaria. Esta es solo mi propia preferencia
personal. me gusta tener
la terminal a la derecha de mi ventana
principal, ¿de acuerdo? No obstante, claro, si
prefieres tenerlo debajo de tu ventana principal,
eso está perfectamente bien. Esto es totalmente subjetivo. Pero así es como me gusta. Entonces ahí tienes. Así
es como puedes ejecutar tu código usando VS Studio. Nuevamente, tendrás opciones
aquí si quisieras. Puedes ir aquí a
Archivo, crear un nuevo archivo. Puedes abrir cualquier
archivo Python que hayas guardado. Puedes bajar
aquí a las preferencias. Puedes ir aquí a temas, y luego por supuesto, puedes
cambiar el tema del color. Puedes ir con Kimb oscuro o, ya
sabes, cambiar la apariencia Depende completamente de ti. Pero así es como
puedes trabajar con el VS en la aplicación Visual
Studio Code. Es un poco más
complicado que Thonny, pero es, claro,
más potente Entonces, depende completamente de
ti cualquiera de estas dos aplicaciones
que prefieras, puedes elegir la que quieras trabajar con la
que quieras trabajar Así que gracias por mirar, y te veo
en la próxima clase.
6. Hola mundo: Bien, entonces ahora que
tenemos a Thonny todo configurado, o tal vez estés caminando con Visual Studio Code.
No importa. Es hora de que
escribamos nuestro primer programa. Y ese programa va a ser un programa muy sencillo que imprimirá las
palabras hola mundo. ¿Bien? Así que mira
esto, ¿de acuerdo? Voy a decir impresión, espacio y luego corchetes entre comillas
dobles. Hola mundo. Bien. Y luego voy a dar
click en el botón Ejecutar. Y ahí está Hello World. Muy, muy primer
programa con Python. Ahora, quiero desglosar
esto por ti. Verás, en Python o, hecho,
en cualquier lenguaje de
programación, siempre
vas a
tener funciones incorporadas que harán algo por ti En este caso, print es una función incorporada que
ya ha sido codificada en Python Entonces cuando usas esa función
print, Python sabe que, oh, bien, quieres
sacar algo, ¿verdad? Entonces eso es lo que hace Print. Y ahora la cosa es que, siempre que quieras imprimir texto, siempre
necesitas tenerlos
entre comillas dobles. Bueno, en realidad, hay ciertos momentos en los que puede que no necesariamente necesites
citas dobles. Ya llegaremos a eso. No te preocupes. Pero en la mayoría de los casos ,
para ir a lo seguro,
se quiere envolver el texto
entre comillas dobles. Ahora bien, si tuviera que
quitar las comillas
y yo iba a ejecutar el programa, ahora ve que
terminamos teniendo un problema. Es un error de sintaxis
porque en este momento, Python no entiende
lo que está pasando. ¿Dónde están las
comillas dobles? Y además, necesitas tener
tu texto entre corchetes. Entonces, si tuviera que añadir las
comillas dobles aquí, sin los corchetes, intentemos volver
a ejecutar el programa
y ver qué pasa. Y entonces, de nuevo, ya
se puede ver, sigue diciendo
que le
falta el paréntesis Entonces a la hora de ejecutar
ciertos tipos de funciones, hay ciertas reglas
que debes seguir. Entonces, en el caso de
imprimir texto, quieres tenerlos entre paréntesis y entre comillas
dobles Entonces una vez más, voy a ejecutar el programa, y ahí está. Hola mundo está funcionando. Voy a seguir adelante
ahora mismo y cerrar la asistente. Y ahí está. Bien. Sigamos adelante. Hagamos esto un
poco más interesante. Y si quisiera
imprimir hola mundo,
digamos, cinco veces, ¿verdad? Ahora, obviamente, podría
simplemente copiar, ¿de acuerdo? Nuevo texto de línea, pegar, pegar, pegar, cinco veces, ¿de acuerdo? Ahora bien, si yo estuviera en el
programa, ahí tienes. Hola mundo, hola mundo, hola mundo, hola
mundo, hola mundo. Pero mira esto. intentar imprimir dos veces en su lugar. Y en vez de
tenerlos en diferentes líneas, déjame ponerlos exactamente en
la misma línea. Así que tenemos impreso Hello World, print Hello World, run, y ahora tenemos un problema. El problema que tenemos aquí es que, Oye, ¿qué está pasando? Python no
entiende cuando
tienes múltiples funciones
en la misma línea exacta. Y esto es algo
universal con todos los lenguajes de programación, ¿de acuerdo? Siempre que estés llamando a
múltiples funciones, quieres tenerlas
en líneas separadas. Esta es la
forma ideal de escribir código. Porque si lo
pienso bien, si inicias o si el programa te
permitió el idioma te
permitió ejecutar
múltiples funciones exactamente
en las mismas
líneas y todo eso. Tu código podría
terminar volviéndose muy, muy difícil de leer, sobre todo por otros desarrolladores. Entonces cuando lo tienes
en líneas separadas, se
vuelve más limpio,
se vuelve más presentable Y lo mejor de todo, tu
lenguaje de programación, en este caso, Python va a entender qué es
lo que están tratando de hacer. Bien, hay otra cosa
que debes tener en cuenta. Ahora, voy a hacer esto un
poco complicado. Lo que voy a hacer
aquí es que voy
a crear algo conocido
como variable, ¿bien? En este caso, voy a llamar
a mi texto variable. Igual. Y ahora, en
este caso, hola mundo. Entonces el texto es una
variable. Una variable. Se puede pensar en una variable como básicamente algo que
almacenará un determinado
tipo de valor, ¿de acuerdo? No siempre
tiene que ser texto, podrían
ser números.
Podría ser cualquier cosa. En este caso,
ahora mismo, es un texto. Es un trozo de texto
que dice hola mundo. Entonces el texto variable tiene
el valor hola mundo. Ahora bien, si tuviera que
entrar aquí y le dijera, imprima entre paréntesis, texto ¿Qué crees que
va a pasar? Bueno, va a
decir hola mundo, porque hemos asignado
la variable text para tener un valor de hello world. Pero fíjate, no lo
teníamos entre comillas dobles. Eso es porque le estamos diciendo a
Python que, Hey, Python, queremos que imprima el
valor de la variable text. Si vine aquí y
asigné las
comillas dobles al texto en su lugar, ¿qué cree que
va a imprimir? Bueno, va
a imprimir texto. ¿Bien? Así que siempre que
quieras imprimir los
valores de tus variables, no
necesitas encapsular la variable
entre comillas dobles Entonces voy a seguir adelante. Ahora mismo, quita
las comillas, vuelve a
ejecutar el programa y
déjalo ir Hola mundo. Entonces, obviamente,
vamos a
profundizar mucho en estas funciones y variables y
cosas así Pero solo quería
darte un fragmento muy pequeño de qué esperar y, por
supuesto, permitirte escribir tu primer
programa usando Python Entonces a medida que avancemos en el curso, comenzarás a aprender
un poco más sobre las reglas de la programación
Python, cuándo debes encapsular tu texto
entre comillas dobles, cuándo debes usar
comillas y así sucesivamente Vamos a llegar
mucho, mucho más profundo. Pero eso es todo por escribir
nuestro primer programa. Gracias por ver. Te
veré en la siguiente clase.
7. Introducción a la sección de tipos de datos: Bienvenido oficialmente a la
primera sección principal del
curso real de Python
en sí. Y aquí dentro,
vamos a estar
hablando de variables y tipos de datos. Escucha, te garantizo que independientemente del lenguaje
de programación que intentes aprender, esta normalmente va a ser la primera sección porque en el corazón de cada programa, no importa lo básico
o avanzado
que sea, va a girar en
torno a algún dato, ya sean cadenas
o enteros, vas a tener datos
involucrados en cada Entonces en esta sección,
vamos a hablar de los diferentes
tipos de datos que existen. También vamos a hablar de
las operaciones de bullying. Entonces digamos, por ejemplo,
querías decir que algo no es cierto o algo es falso,
cosas así. Y luego, claro, los operadores
aritméticos, ¿de acuerdo? Cómo sumar,
restar, multiplicar, vide en Python, matemáticas básicas, vamos a aprender todo
eso en esta sección Entonces, claro, al
final de la sección, va a
haber
un ejercicio de codificación que quiero que intentes. Dáselo a todos. No te preocupes. Si no puedes resolverlo, yo también te proporcionaré
la solución. Enhorabuena.
Estamos a punto de comenzar nuestro viaje al mundo
de Python. Empecemos.
8. Trabajar con cuerdas: Bueno, bienvenido de nuevo.
Ahora, dediquemos un poco más de tiempo a
hablar de cuerdas. Hasta ahora, hemos trabajado con
la cadena hello world, y sí dije que cada vez que
estás envolviendo tu texto, normalmente
quieres usar comillas
dobles. Sin embargo, eso no siempre es cierto. El valor predeterminado es envolver su texto con
comillas dobles. Sin embargo,
en realidad puedes escapar usando comillas simples. Así que déjame ir por aquí
ahora mismo y editar eso. Estoy usando
comillas simples. Presiono Run, y puedes ver
que funciona perfectamente bien. Por lo que no siempre hay que
usar comillas dobles. La pregunta natural
que podrías tener aquí es, Bien, entonces, ¿cuándo usamos single? ¿Cuándo usamos el doble? ¿Realmente importa?
En la mayoría de los casos, realmente
se reduce a
tu preferencia personal, ya sea un usuario de una
sola cotización o un usuario de doble cotización. Por defecto, la mayoría de
los programadores tienden a ir con las citas dobles Y hay casos en los que en realidad
podrías incluso usar ambos en
la misma cadena. A modo de ejemplo, ¿y
si quisiera decir algo como él
dijo, hola, verdad? Entonces déjame ir ahora mismo
y decir que dijo Kremer Y voy a saludar. ¿Cómo podríamos
imprimir esto con éxito? Porque si hicimos clic en
Ejecutar ahora mismo, nos
va a dar un mensaje de
error, ¿de acuerdo? Tenemos que envolver estos textos, estas letras
entre comillas. Pero, ¿cómo lo hacemos? Bueno, podríamos hacer esto. Podría ir por aquí ahora mismo, agregar un solo arco de cotización. Oh, lo siento, tiene que estar adentro. Entonces la cita única es
primero, ¿de acuerdo? Y ahora para las
palabras reales que dijo hola, voy a usar las comillas
dobles aquí para envolver la palabra
exacta hola misma. Y entonces siempre que en realidad, esto es bastante común en los lenguajes de
programación, ¿de acuerdo? Siempre que tengas una comilla de
apertura, también
quieres tener una
comilla de cierre. Entonces voy a agregar las
comillas simples ahí mismo. Y ahora si hago clic en Ejecutar, puedes ver ahora mismo
que realmente funciona. Podríamos hacer exactamente lo contrario. Podría comenzar con comillas
dobles, ¿de acuerdo? Y entonces voy a
venir aquí ahora mismo, rap hola entre comillas
simples y luego al cierre de comillas
dobles, corre, y puedes ver que
funciona perfectamente bien. Sin embargo, ¿y si quisiera cuerdas
muy largas, verdad? Entonces sí tengo a mi Ipsum
generto aquí. Así que déjame agarrar este primer
párrafo de aquí, ¿de acuerdo? Copia, ven aquí. Ahora, en realidad podría envolver todo tan grande como
está dentro del máximo de
doble cotización, haga clic en Ejecutar, y va
a funcionar perfectamente bien. Pero, ¿y si realmente
quisiera crear algún espacio, y así, por ejemplo,
quería tener algo de espacio aquí Vengo aquí ahora mismo
y agrego algo de espacio, ¿verdad? Ahora es todo tipo
de desorganizado. Hago clic en Ejecutar, y ahora vamos a tener un mensaje de flecha. Ya no funciona porque Python no puede entender el espacio entre
las líneas de texto. Entonces aquí es donde entrarán las
comillas triples. Así que mira esto, bien.
Voy a añadir uno, dos, tres. Bien. Vaya, perdón por
eso. Eso es tres. Bien. Y claro, voy a venir
aquí ahora mismo y añadir las tres
comillas de cierre. Y ahora si hago clic en Ejecutar, y ahí tienes, puedes
ver que realmente funciona. Por lo tanto, hay ciertos
casos en los que es posible que desee usar comillas
triples
si tiene un
tipo de espaciado muy específico. También
se suele utilizar para, como, documentación, escribir líneas
de código, cosas así. Ahí es donde
usarías la triple cotización. Ahora, también podríamos combinar
cuerdas. Todo bien. Entonces, como ejemplo,
déjame mostrarte rápidamente, déjame crear una nueva variable
aquí y decir X, ¿de acuerdo? Igual, y luego entre comillas
dobles, voy a saludar. ¿Bien? Y entonces podría crear una
segunda variable Y es igual a mundo. Bien. Y ahora, si quisiera
combinar ambos, podría decir imprimir
entre paréntesis,
muy simple, X más Y. Ahora, si hago clic en
Ejecutar, ahí tienes Hola mundo. Pero si quisiéramos agregar el espacio
entre hola y mundo, todo lo que puedo hacer es
o bien puedo agregar el espacio
en Hola aquí mismo. Entonces he agregado el espacio
después de la O, haga clic en Ejecutar. Tienes Hello World,
o yo podría hacer lo contrario y simplemente agregar un
espacio al inicio de W, clic en Ejecutar, y ahí tienes, tienes exactamente el mismo resultado. Ahora, hagamos esto un
poco
más sofisticado. Este programa sólo un
poco más sofisticado. Voy a presentarles una nueva función llamada input. Hasta el momento, hemos estado
trabajando con la impresión. Ahora déjenme
presentarles aportes. Entonces, la entrada es básicamente
una función que le pedirá al usuario que proporcione
algo, ¿de acuerdo? Entonces voy a decir entrada. Y luego entre paréntesis, voy a decir
algo, por favor. Bien. Entonces si corro oh,
perdón por eso. Si ejecuto el comando, puedes decir
ahora mismo dices algo, por favor,
y ahora si digo,
Hola, mi nombre es Alex y presiono Enter,
no pasa nada, ¿bien? Porque nuestro programa, lo
único que hace es
pedirle al usuario que diga
algo, y eso es todo. No va a
hacer nada con lo que el usuario realmente ha dicho. Entonces, para que esto sea un
poco más avanzado, voy a volver aquí. Bien. Eliminemos esto vamos a
crear una nueva variable. Diré respuesta del usuario. Este va a ser el
nombre de mi variable. Y por cierto, permítanme
decir algo muy rápido. Es buena etiqueta, buena etiqueta de
programación. Siempre que estés creando
nombres para tus variables o tus funciones y estés
combinando dos palabras juntas, en este caso, ahora mismo, estoy
combinando usuario y respuesta. La segunda palabra, la primera letra normalmente
debe estar en mayúsculas. Por eso la R de respuesta aquí está en la capital.
Sólo digo, ¿de acuerdo? Así que solo tenlo en mente. Entonces usa una respuesta igual, ¿de acuerdo? Y voy a decir entrada. Y ahora entre paréntesis, voy a decir
algo Por favor. ¿Bien? Sin embargo, voy
a bajar aquí. Ahora voy a usar la función de
impresión entre paréntesis, voy a decir
respuesta del usuario. Eso es. Bastante sencillo.
Voy a seguir
adelante ahora mismo,
ejecutar el comando. Dice, di algo por favor, así que voy a decir,
mi nombre es Alex. Presiona Enter, y ahí vas. Ahora está diciendo,
mi nombre es Alex. Así que con éxito te introdujo
una nueva función, que son entradas que le pedirán al usuario que proporcione algo. Hemos hablado sobre cómo usar
el máximo de cotización simple,
el máximo de comillas
dobles, así
como las comillas triples. También te he mostrado cómo podemos combinar
cadenas creando múltiples variables
y simplemente usando el operador plus
para combinarlas. Así que poco a poco, poco a poco,
estamos mejorando cada vez mejor en caminar
con Python y cuerdas. Así que gracias por ver
el video, y claro, los
veo en
la próxima clase.
9. Otros tipos de variables: Ahora echemos un vistazo a una forma
diferente de tipo de datos. Hasta ahora, hemos estado trabajando
con cuerdas, ¿verdad? Pero ahora echemos un
vistazo a los puntos flotantes y enteros, también
conocidos simplemente
como números. Todo bien. Así que sigamos adelante y
eliminemos este programa, y permítanme antes que nada, crear una variable
X igual a cuatro. ¿Bien? Y entonces Y
es igual, digamos, 6.0. Ahora bien, la diferencia obvia
entre estos dos es que X no tiene
ningún punto decimal. ¿Por qué Y tiene el
6.0? ¿Todo bien? De hecho, permítame hacer esto
un poco más razonable. Hagámoslo 6.3, solo
como ejemplo, ¿no? Entonces y, en este caso, sería un punto flotante porque sí tiene
un punto decimal, mientras que cuatro será el entero. Entonces si seguí adelante
ahora mismo e imprimí X más Y y ejecuto mi programa. Ya ves que vamos
a conseguir el número 10.3. Bastante sencillo, correcto. Sin embargo, podríamos hacer ciertas cosas como
decir, por ejemplo, si quisieras convertir 10.3
siendo un número flotante, si quisieras
convertirlo a un entero, simplemente
podríamos
usar una nueva función llamada la función integer Entonces lo que voy
a hacer aquí mismo está dentro de este primer soporte, voy a abrir otro
soporte y agregar INT. Bien, entonces INT lo siento.
Perdón por eso. I NT. Bien, entonces INT aquí es una función que
significa entero, ¿verdad? Y claro, ya que hemos
abierto la función integer, vamos
a tener que cerrarla también. Entonces déjame agregar el corchete de
cierre. Y ahora, si tuviera que
ejecutar mi programa, puede ver que ha
convertido 10.3 a diez
debido a la
función INT integer Esta fue la primera
vez que añadimos una función dentro de
otra función. Primero, tenemos la función
print, y luego dentro de
la función print, tenemos la función integer. Entonces esto es una
cosa que debes tener cuenta cuando se trata
de programación Python. Puedes tener una función dentro de otra
función, y de hecho, puedes tener tres,
cuatro funciones en lugar de una a otra, siempre y cuando la
jerarquía sea correcta. En este caso,
ahora mismo, no puedo hacer que la función integer entre primero y luego imprima.
De hecho, ¿sabes qué? Vamos a probarlo, ¿de acuerdo? ¿Por qué no? Voy a seguir adelante
ahora mismo. Imprimir, ¿bien? Y luego INT, bien,
¿qué va a pasar? ¿Qué va a pasar?
Voy a hacer click en Ejecutar. Y ahí tienes. Entonces, aunque un poco
bien, realmente no funcionó. Es decir, sí obtuvimos la X más Y. Obtuvimos la
respuesta correcta para ser 10.3 Pero desafortunadamente, no convirtió los resultados
a un entero real. Entonces Python básicamente ignoró
la primera parte, que es la función integer y luego simplemente siguió
adelante y dijo:
Bien, imprime X más Y. Y luego, claro, nos
dijo que, Oye, hay algún tipo de
problema con la sintaxis. Así que hay que tener cuidado
cada vez que intentas agregar funciones dentro
de otra función, tiene que
haber una jerarquía
y tiene que ser correcta. Así que vamos a revertir esa carrera
otra vez, y ahí tienes. Así mismo, si quisiera
convertir los resultados
a un número flotante, también
podría hacerlo. Entonces por ejemplo, bien, si cambio la Y aquí a
digamos cinco, ¿verdad? Pero en vez de nueve, que sería la respuesta
obvia aquí, yo quería que fuera 9.0. Voy a cambiar la
función entera aquí para flotar. Entonces esto es lo contrario, ¿verdad? Entonces mira esto. Voy a dar click en
Ejecutar, y ahí tienes. Ahora es 9.0. Sabes, es muy
probable que no necesites
usar la
función integer o float en tus programas. Todo depende del tipo
de programas que vayas a crear. Pero sin embargo,
es importante
entender estos conceptos
que puedes agregar. Puedes convertir un tipo de
datos a otro, y que también puedes tener una función dentro de otra. Así que gracias por
ver. Te veré en la siguiente clase.
10. Operadores booleanos actualizados: Un tipo más de tipo de datos que
debes conocer serán
las operaciones Bian o
los valores booleanos Normalmente, van
a ser dos de ellos. O tienes verdadero o falso, y dependerá en gran medida del resultado de ciertos
tipos de operaciones. Ahora, como ejemplo, por aquí, tengo la variable
X es igual a cinco, la variable Y es igual a diez. Ahora, tengo mi
primera función de impresión aquí que dice que X es igual a Y. El segundo es X es menor que Y. Entonces con bollanes, o tienes verdadero o falso Ahora bien, ¿cuál
crees que sería
la respuesta para la primera impresión? Bueno, la respuesta
obviamente sería falsa porque cinco
no es igual a diez, mientras que la segunda debería
ser cierta porque X es, hecho, menor que Y. Así que ahora si sigo adelante
y ejecuto este programa, ahora se puede ver
que tenemos falso y verdadero. Estos son todos
a los que nos referimos como los valores de Bollan o los operadores de Bollan, y normalmente los usamos
cada vez que intentamos
crear bucles o declaraciones
condicionales No te preocupes. Vamos a hablar de esos en la siguiente sección. Pero normalmente, es posible que queramos escribir un programa
que revise para ver si algo
ha pasado, y luego si ha
sucedido, es decir, si es verdad, entonces hacer algo. O también podemos decir, si
esto no ha sucedido, por lo tanto, si es falso, entonces haz otra cosa. Entonces vamos a
estar haciendo uso de operadores y
valores
bullan un poco más tarde, pero lo que pasa los valores y operaciones
booleanos
es que trabajan con los operadores de comparación como tus iguales a menos de lo que
es igual a, y Pero también tenemos lo que
llamamos los operadores lógicos. Los operadores lógicos
serían cosas como N o no. Entonces, como ejemplo, permítame darle otro
programa aquí. Permítanme ante todo,
decir A es igual a verdad. ¿Bien? Y entonces B es igual a falso. Por cierto, tenga en cuenta que lo verdadero y lo falso
aquí no son cadenas. Y no son cadenas porque se puede ver
que con verdad, empieza con una
T. mayúscula Y con lo falso comienza con la F mayúscula Así que Python automáticamente
sabe eso, Bien, aquí estás tratando
con lingotes Entonces si quería escribir aquí
una función de impresión
que diga algo así como, digamos, A y B, déjame escribir otra, imprimir. Digamos A o B, y después la última impresión voy a decir
digamos nota A. ¿Cuáles crees que
serán las respuestas para los tres? Por lo general, siempre que
esté tratando con los operadores lógicos y esté comparando dos o más valores, todos ellos tendrán que ser ciertos cada vez que esté
usando la declaración and. Si uno de ellos es falso, entonces la respuesta será falsa, ¿de acuerdo? Lo contrario es con. Entonces, si estás diciendo verdadero o
falso, va a ser verdad. Es verdad y falsa, la respuesta será falsa. Y entonces obviamente para
el último aquí, no A será falso porque no A significa lo contrario de verdadero opuesto de verdadero es falso. Entonces, si ejecuto el
programa ahora mismo, verás una
vez más que A y B verdadero y falso
siempre serán falsos, mientras que verdadero o falso serán verdaderos mientras que no A será falso. Entonces, una vez más,
los operadores y valores de Bollin, también
trabajan con
operadores lógicos, como el tuyo o no Y, por supuesto, sus operadores de
comparación como sus iguales a no es
igual a menor que, mayor que y así sucesivamente. Entonces vamos a estar trabajando
con operadores booleanos medida que avancemos en el curso.
Gracias por ver. Te veré en la siguiente clase.
11. Operadores aritméticos actualizados: Hablemos de algunos operadores
más y comenzando con las operaciones
aritméticas Y esto es solo, ya sabes, las matemáticas o matemáticas
básicas que aprendimos cuando
éramos niños, ¿verdad? Entonces tienes, ya sabes, uno por uno, dos, dos, tres, más uno,
diez, menos siete, ese
tipo de cosas, ¿verdad? Entonces, lo que he hecho aquí es que
he asignado el
valor de diez a variable A y el valor
de tres a la variable B. Y he escrito varias operaciones
aritméticas aquí Tenemos A más B, A menos B,
A por B, A dividido
por B, A, módulo B, que simplemente devolverá el resto cuando
dividamos A por B, y entonces el último
aquí va a ser un B exponencial, que elevará el valor
de A por el poder de B. Entonces, ¿cuáles serán los resultados
aquí Déjame ejecutar el programa,
y claro, diez más tres son 13, diez menos tres son siete, diez por tres son 30, 10/3 serán 3.33, y luego diez pérdidas modelo
tres serán uno Y claro, diez por
diez por
diez serán iguales
a 8 mil, ¿verdad? Bien, entonces espero que obviamente supieras las respuestas a todas estas operaciones. Pero vayamos más allá. Voy a quitar esto, ¿de acuerdo? Y sí tengo algunas
operaciones más aquí. Y el primero
aquí es lo que llamamos un operador de asignación. Se puede ver ahí mismo,
dice, más iguales, ¿verdad? Déjame agregar estas nuevas
líneas, y ahí tienes. Bien, entonces tenemos más iguales. Lo que esto simplemente significa es que vamos a decir X
es igual a X más cinco. Básicamente es lo mismo. Entonces X más igual a cinco es exactamente lo mismo que decir
X es igual a X más cinco. Esta es solo una
forma breve de escribir esto. Así que permítanme seguir
adelante y quitar esto. Entonces, ¿cuál crees que sería la
respuesta aquí? La respuesta obviamente
aquí va a ser 15 porque diez más cinco equivale a 15. Ahora, puedes hacer lo
contrario, ¿de acuerdo? Se puede decir menos
y luego es igual. La respuesta aquí obviamente
sería cinco porque diez menos cinco serán cinco. Y tienes otras
, claro, como la a multiplicación, que nos dará un 50 Y entonces también
tenemos la división, que nos va a dar
dos, dos puntos oh. Entonces estos son lo que llamamos
los operadores de asignación. Ahora, quiero llamar su
atención sobre una cosa más, y esto es lo que llamamos
la precedencia del operador Déjame antes que nada,
quitar el código y déjame arrastrar esto a la
parte superior e imprimir en una nueva línea. Déjame copiar este comando y venir aquí
y luego imprimir. Bien, así que échale un vistazo a esto. Bien, tenemos dos
expresiones diferentes, ¿de acuerdo? El primero de aquí dice,
dos más tres por cuatro. Bueno, el
segundo aquí es que tenemos un soporte dos más tres
y luego por cuatro. ¿Cuáles crees que van a ser los resultados de
ambas expresiones
? Nuevamente, esto podría recordarte las matemáticas que hiciste en tus días de jardín de infantes o
primaria. Pero siempre encuentro
esta cosa bastante fascinante porque aquí, vamos a conseguir dos resultados
diferentes. Para que puedas pausar el
video e intentar adivinar cuáles serían los resultados de
ambas expresiones. Si tienes tus resultados,
sigamos ahora mismo y corramos. Y el primero
aquí será 14 mientras que el segundo será 20 ¿por qué? Porque en la primera
expresión aquí, tenemos dos operadores. Tenemos el operador
aritmético plus, y luego tenemos
la multiplicación Python hará la
multiplicación primero antes de la adición Entonces tres por cuatro
va a ser 12, 12 más dos, va
a ser igual a 14. Sin embargo, por aquí en
la segunda expresión, realidad
va a hacer la adición primero porque
están dentro de paréntesis. Por eso. Entonces a menos que
me equivoque, normalmente, es que va a tener el paréntesis estará en lo más alto de
los precedentes Si no tienes
el paréntesis, comprobará la
exponenciación Si no hay ninguna
exponenciación entonces irá a multiplicación,
irá Iré a modulos, suma, y luego
finalmente resta Y luego en una expresión muy
compleja, si tienes operadores de
comparación, esos vendrán a continuación, y luego
finalmente operadores lógicos. Pero no hay necesidad de ir
más allá que eso. Por aquí, simplemente
tenemos dos operadores principales.
Tenemos tres. Tenemos el paréntesis, que por supuesto va a
tener precedencia sobre la Entonces dos más tres es cinco, cinco multiplicado por
cuatro equivale a 20. Entonces, una vez más, esto
es lo que llamamos la precedencia del operador Nuevamente, para ser honestos, en
realidad no vamos a estar trabajando con estos en este curso, pero sin embargo, esto es algo de lo que
debes estar al tanto. Gracias por ver. Te
veré en la siguiente clase.
12. Introducción al trabajo con la sección de cuerdas: Bienvenido a la siguiente sección donde ahora nos vamos a centrar específicamente en el tipo de datos de
cadenas. Sé que antes ya
hablamos de cuerdas. No obstante, necesitamos profundizar aún más en este tema en
particular y ¿por qué? Bueno, eso es porque la
gran mayoría de
las veces el tipo de datos
con el que
trabajarás van a ser cadenas. Sí, trabajarás con
enteros y otros tipos de datos, pero las cadenas normalmente serán aproximadamente del 80 al 90% de los tipos
de datos con los que trabajas Entonces en esta sección,
vamos a ahondar mucho más. Te voy a mostrar cómo
puedes manipular las cuerdas. Entonces digamos, por ejemplo,
tienes dos piezas de cuerda, quieres extraer ciertas
letras de la cadena. Quieres extraer letras
de esa otra cadena, unirlas, cosas así. Aprenderás
a hacer esas cosas. Vas a aprender
cómo puedes convertir cadenas
enteras a
mayúsculas o minúsculas, cómo puedes cortarlas y
hacer tantas otras cosas. Entonces creo que vas
a disfrutar de esta sección. Y también, al igual que
con la primera sección, al final de esta sección, también va a
haber un ejercicio de
codificación. Entonces, por favor, intente
el ejercicio de codificación. Ojalá, lo puedas
hacer con éxito. Pero si no puedes, te
voy a proporcionar
la solución también para que puedas comparar tu código con mi código. Entonces, sin perder
más tiempo, comencemos.
13. Manipulación básica de cuerdas: Ya está familiarizado con
las diferentes formas de imprimir sus variables de
cadena. Lo que tengo en mi
pantalla aquí mismo, creé la variable nombre de usuario y le asigné el valor de
cyber como cadena, y luego simplemente
dije imprimir nombre de usuario. Eso por supuesto resultó en
la impresión cibernética muy, muy simple, muy básica. Y ahora desde la línea cuatro, asigné exactamente el mismo valor cyber a la variable nombre de usuario. Pero fíjate que en la
línea cinco y seis, demuestro dos formas distintas de imprimir la variable. Podría haber dicho, bienvenido al mundo de
la
programación y luego coma y luego el
nombre de la variable,
que es, por supuesto, nombre de usuario,
cyber, y la salida es bienvenida al mundo
de la programación, cyber Y luego en la línea seis, en lugar
de usar el signo de coma, uso el símbolo más, y esto básicamente
es lo que llamamos concatenación cada vez que estás
usando el símbolo más, y luego tienes
exactamente la misma salida No obstante, observe que
hay una ligera diferencia
en el espaciado. Con el símbolo de coma, tiendes a tener un
poco más de espacio entre tu cadena y luego el nombre real
de tu variable Sin embargo, ambos
métodos funcionan bastante bien. Todo es cuestión de elección. Sin embargo, permítame mostrarle algunas otras formas básicas de
manipular su cuerda Entonces digamos, por ejemplo, quería imprimir cyber
diez veces, ¿verdad? En lugar de que yo
creara usando name cyber,
usando name cyber, usando name cyber diez veces, lo que simplemente podría hacer
aquí mismo es que podría agregar el símbolo astérico y
luego solo decir diez veces Y entonces todo lo que tengo que
hacer ahora mismo es simplemente
imprimir el nombre de usuario. Ahora si ejecuto el programa, se
puede ver que tenemos ciber ciber ciber ciber
ciber ciber diez veces. Y si quiero un espacio
entre mis palabras, solo
puedo agregar un espacio entre la letra R y
el código de cierre. Y si vuelvo a ejecutar el programa, entonces te vas, tenemos
ciber cyber cyber. Entonces esto es lo que llamamos
repetición, ¿verdad? Otra función que
quería hacerle saber con respecto a las cadenas es
la longitud de una cadena. Podemos determinar qué tan
larga es una cadena. Básicamente, en otras palabras, podemos determinar el número
de caracteres en una cadena. Entonces por ejemplo, por aquí, si quería averiguar cuántos personajes
había en el cyber, todo lo que tengo que
hacer es venir aquí. Después de la función print, puedo introducir otra
función llamada la función length, que es, por
supuesto, LN, y luego tendré que agregar mi
cierre, romperla por ahí. Y ahora, si ejecuto el programa, puedes adivinar cuál va a ser el
valor? El valor va
a ser cinco porque cyber está conformado por cinco
caracteres, cinco letras. Ahora, tal vez te estés
preguntando, Bien, todo
esto está bien, pero
¿cómo es esto relevante? ¿Cómo aplicamos esto en el mundo de la ciberseguridad
específicamente Estoy bastante seguro de que debes
haber visto en sitios web antes donde te
piden que inicies sesión. Empiezas a escribir
tu contraseña, pero luego no ves
los caracteres reales. En cambio, es posible que veas
el símbolo de guión o más comúnmente el
símbolo astérico en su lugar Podemos usar el conocimiento
que hemos adquirido hasta ahora para crear
un escenario similar. Así que mira esto, ¿de acuerdo? Voy a crear
una nueva variable ahora mismo y llamarla contraseña. Y ahora agreguemos
la contraseña real. Voy a decir pez espada, que no es exactamente la mejor
contraseña, pero no importa Vamos a ir
con pez espada. Entonces ahora quiero
imprimir sordfsh, así que solo puedo decir imprimir
una contraseña, Entonces, si ejecuto el programa, va a decir que es sordfish, pero queremos reemplazar
cada letra en sordfish con Entonces, básicamente, deberíamos
tener nueve símbolos astéricos en lugar de las propias
letras reales Entonces, ¿qué hacemos? Puedo crear
otra variable ahora mismo y llamarla la contraseña de
subrayado enmascarado ¿Y ahora esto va a
ser igual a qué? Voy a agregar mis códigos y
ahora agregar el símbolo astérico. ¿Bien? El símbolo astérico, y ahora multiplicarlo nuevamente por la longitud de los caracteres de nuestra cadena
de contraseña Y ahí está. Entonces ahora, si ejecuto el programa, y eso no funcionó. Oh, perdóname. Para
la contraseña de impresión, necesitamos cambiar la línea
tres aquí para enmascarar la contraseña porque
ya no estamos imprimiendo la contraseña. Uy. Eso fue un
poco vergonzoso. Bien, entonces ahora vamos a imprimir la contraseña
enmascarada, y si ejecuto el
programa, ahí tienes Bien, entonces ahora tenemos
nueve símbolos astáticos porque el propio SetFish está
conformado por nueve letras Y solo para demostrarte
que esto realmente funciona, si agregué tres
caracteres más, dígitos, en este caso ahora mismo
123, y lo vuelvo a ejecutar, ahora puedes ver que el número de símbolos
astáticos ha
aumentado en tres En lugar de nueve, ahora son 12. Entonces así es como podrías
recrear algo muy similar en tu programa del mundo
real Si querías crear un sistema de contraseñas
enmascaradas, puedes usar este
tipo de conceptos Así que gracias por
ver el video. Te veré en
la siguiente clase.
14. Indexación y recorte de cadenas: Bueno, bienvenido de nuevo.
Ahora, hablemos de algunos conceptos muy importantes hora de
tratar con cuerdas. Tenemos el
concepto de indexación. Ahora, no te preocupes,
vamos a hablar mucho más
de indexar más adelante Pero ahora déjame darte una especie de breve introducción, ¿verdad? Digamos, por ejemplo, por aquí, tengo mi texto, que es igual a la ciberseguridad Ahora bien, ¿y si quisiéramos
específicamente, por una razón u otra, extraer la primera letra de
la palabra ciberseguridad La primera letra aquí
sería C, ¿verdad? Así que podría hacer algo
como decir primero y luego subrayar carácter
igual al texto, y ahora voy
a usar mis corchetes Y ahora necesito indicar la posición
del índice de la
letra a la que quiero apuntar. Ahora, en ciberseguridad,
C es la primera letra. Entonces, ¿cuál crees que va a ser mi
número de índice aquí? No, no es uno, va a ser cero Por favor, ten en cuenta que en la programación en
general, no solo en Python, sino en la programación general,
tu indexación comienza desde cero y no desde uno Entonces, si ahora quería imprimir el contenido de mi variable
llamada primer carácter, la respuesta aquí
va a ser C. De igual manera, si cambio
este a uno,
ahora va a ser Y. Así que esto de aquí mismo es la indexación, y vamos a
estar trabajando con
ello a lo largo de este curso Ahora bien, el segundo concepto aquí
va a ser el
concepto de sl pecado. El glaseado nos permite tomar
una porción de la cuerda. Ahora, la ciberseguridad es
una cadena bastante larga. Entonces, ¿y si solo
quisiéramos apuntar, como, los cinco primeros personajes, que serían cibernéticos? ¿Cómo haríamos esto? Bueno, aquí dentro, puedo agregar mi posición de índice para el primer personaje
que va a ser cero. Y entonces, ¿dónde
quiero parar? Cinco. Esto de aquí mismo es a lo
que nos referimos como rebanar. El primer número aquí representa desde dónde
queremos comenzar el corte En este caso, ahora mismo,
he agregado cero porque quería comenzar desde
la primera letra. Y entonces ¿cuántos
personajes queremos? Queremos los cinco personajes. Entonces ahora, si ejecuto el programa, va a ser Chi Burr Ahora bien, ¿y si quisiéramos
extraer T segura solamente, verdad? No queremos etiquetarlo cyber. Queremos etiquetarlo solo de seguridad. Una cosa que podría hacer
aquí es que podría decidir simplemente ir con
el número índice de S, que será cero, uno, dos, tres, cuatro, cinco. ¿Bien? Podrían ser cinco. Y
ahora agrego mi colon. Podría indicar cuántas letras quiero que contenga el
corte Sin embargo, si no
indico un valor aquí, Python
automáticamente aparecerá por defecto al final de la cadena. Entonces ahora si ejecuto el programa, va a decir seguridad. ¿Vías cómo funcionaba eso? Yo indiqué, Bien,
quiero comenzar desde S y el número índice de S aquí va a ser cinco. Y debido a que no indiqué dónde quiero que
se detenga el corte, Python solo irá
hasta el final Por eso tenemos seguridad. De igual manera, podría hacer
casi lo contrario. Podría dejar el inicio vacío, y ahora podría ir por aquí. Y si indiqué, digamos, cinco como ejemplo, ¿cuál crees que va a ser el
valor aquí? Cuando no indiques
tu posición inicial, Python arrancará automáticamente. La posición por defecto
será al principio. Entonces, ¿cuál crees que va a ser la
respuesta aquí? La respuesta aquí
va a ser cibernética? Porque a pesar de que no
indicamos el comienzo, Python va por defecto al
principio mismo, que es C. Y entonces cinco caracteres
van a ser C Y, BR, y eso va
a ser Psi bur. Sin embargo, eso no es todo. También podríamos usar el
concepto de índices negativos. Entonces, por ejemplo, mira
esto, ¿de acuerdo? Voy a ir
por aquí, ¿verdad? Y si quisiera
apuntar a la seguridad, una cosa que podría hacer es que
puedo empezar desde el final, y sé que la seguridad es
lo que son ocho personajes, así que voy a decir menos ocho. Y ahora voy a agregar mis dos puntos y por defecto
hasta el final. Y ahora si ejecuto el
programa, ahí tienes. Es seguridad porque Python
comenzará desde el final, que es Y, y luego va a ir ocho letras a la izquierda. Se detiene en S porque S es la octava letra. Es
el octavo personaje. Cuando empiezas
desde el final, por
eso tenemos la
seguridad como respuesta. Quizás te estés preguntando,
Bien, ¿cómo
será esto aplicable a la ciberseguridad Alguna vez te has preguntado
cómo los antimalware y los antivirus son capaces de
escanear y detectar Normalmente, la
extensión del archivo tendrá punto EXE. Entonces, por ejemplo, ¿verdad? Por ejemplo, si un nombre de
archivo igual a CMD IOP, ya sabes,
algo raro, Y luego puntear EXE. Este sería un ejemplo
del tipo típico de nombre de
archivo de malware que tendrás Entonces, ¿cómo podemos escribir un programa
que escanee y luego
detecte tan pronto como detecte
la extensión EXE punto, sabe
que, bien, esto podría ser
potencialmente un malware. Aún no hemos hablado de
la declaración If. Vamos a hablar de
ello en la siguiente sección, pero solo asumamos
ahora mismo que bien, si el nombre del archivo Bien. Y ahora, si agregué entre paréntesis, si quería apuntar al
punto EXE desde el final, porque nunca sabemos cuánto tiempo va a
estar
el nombre del archivo antes del punto EX derecho. Siempre es mejor
apuntar desde el final. Sé que menos cuatro,
comenzando desde el final, si es igual, ¿a qué punto EXE? Si sé que los últimos
cuatro caracteres en el nombre del archivo son
iguales a punto EXE, entonces sé que lo
más probable es que este va a ser un Milware Entonces ahora puedo simplemente decir impresiones, y luego entre paréntesis, puedo decir ML Ware encontró, ya
sabes, algo como esto. Entonces así es como se puede aplicar el concepto de slicing en
el mundo de la ciberseguridad Ahora, antes de
redondear este video, déjame hablarte de
una función más. Eso es útil a la hora
de trabajar con cuerdas. Y esa va a ser
la función split. Es una función que
dividirá una cadena en una lista de cadenas
suaves basadas en
un delimitador especificado ¿De qué estoy hablando? Digamos, por ejemplo,
vuelvo a mi texto, y es igual a la ciberseguridad. Ahora puedes decir que son
dos palabras, ¿verdad? Ya no es una
sola palabra ciberseguridad. Ahora tengo dos
palabras ciberseguridad. Entonces, si quería dividir esto, puedo decir palabras. ¿Bien? Es igual al texto, y ahora se divide por puntos. ¿Bien? Estoy adjuntando
la función split al texto variable porque
quiero dividir la ciberseguridad Entonces ahora, si simplemente
imprimí las palabras, ¿cuál crees que va a ser el
resultado? Va a ser cibernético
y luego seguridad. Y si te estás
preguntando, Bien, ¿cómo vamos a aplicar
esto en la ciberseguridad Jerman Vix Video web
comenzará a echar un
vistazo a las aplicaciones de ciberseguridad de rebanar, dividir y
15. Métodos comunes de cuerdas: Bienvenida de nuevo. Así que
sigamos hablando los diferentes tipos
de métodos o funciones que solemos aplicar en cadenas y
uno muy común. De hecho, dos muy comunes más bien serían
las funciones para convertir texto ya sea a
mayúsculas o minúsculas Entonces en mi ejemplo por aquí, tengo mi texto variable
igual a la ciberseguridad Si quisiera convertir
todo a mayúsculas, simplemente
diría texto y no superior abriría nuevos
corchetes, y ahí está Y si quisiera convertir
todo a minúsculas, haré exactamente lo contrario Este será texto impreso punto LWA. Dot ova, abre nuevos
soportes, y ahí está. Entonces, si ejecuto el
programa ahora mismo, se
puede ver que tenemos ciberseguridad
en mayúsculas, y luego ciberseguridad
en minúsculas Entonces estas son dos
nuevas funciones que debes tener en cuenta
dot opa dot LA. Pero también existe la función
para recortar espacios en blanco. Entonces digamos, por ejemplo, tengo
mi variable de contraseña aquí. Tengo espacio, y mi
contraseña real es pez espada, y luego déjame agregar
algo más Si quisiera recortar todo el espacio en
blanco innecesario aquí, todo lo que
haría es decir impresiones, corchetes y luego
contraseña, y ahora despojar. Una vez más, la función de tira, también
podemos usarla para eliminar
cualquier espacio en blanco innecesario, ejecutar el programa,
y ahí tienes. Pez espada sin
el espacio vacío. Pero también podemos reemplazar
caracteres en nuestras cadenas. Digamos, por ejemplo,
déjame darte un
ejemplo aquí dentro. Digamos que tengo mi
mensaje igual a, y digamos, bien,
usa una contraseña. Digamos que la
contraseña ahora mismo es la contraseña uno, dos, tres. Sólo como ejemplo,
¿verdad? Pero luego queríamos imprimir
algo que dijera,
bien, usar una contraseña
y luego redactar ¿Bien? No queremos mostrar la contraseña real en sí. Es similar a lo que hicimos
en la lección anterior donde usamos el símbolo Asteris
para reemplazar a los caracteres Está relacionado pero
ligeramente diferente. Entonces déjame mostrarte de lo que estoy
hablando, ¿de acuerdo? Así que voy a
venir aquí ahora mismo. Y voy a decir, vamos a
crear una nueva variable. Digamos mensaje de
subrayado seguro, bien, será igual
a ahora message,
dot, y ahora una nueva
función llamada replace ¿Bien? Quiero reemplazar la contraseña
real por otra cosa. Entonces dentro de mis corchetes, ahora
voy a poner la contraseña
real que
quiero reemplazar que es la contraseña uno, dos ,
tres, coma, y ahora las letras
o caracteres reales o cadena, quiero reemplazarla por En este caso, ahora mismo,
voy a abrir mis corchetes, y en mayúsculas, puedo decir redactada
Sólo como ejemplo, ¿o Entonces ahora, todo lo que necesito
hacer es simplemente imprimir entre paréntesis mensaje de
subrayado seguro Y ahora si ejecuto un programa, ahí tienes, usa una
contraseña reduct head Entonces puedes usar la
función replace para simplemente reemplazar cualquier parte particular de tu cadena con otra cosa, y así es como lo harás. Para redondear, déjame
mostrarte una cosa más, y esto es encontrar subcadenas. Digamos, por ejemplo, que tenemos
una variable llamada email, y es igual a,
digamos, admin en labsyb.com Estoy bastante seguro, por supuesto, debes haber encontrado
esto tantas veces antes donde tal vez estás tratando de
crear una nueva cuenta
en un sitio web, y te pedirán que
proporciones una dirección de correo electrónico. Si escribes algo falaz
, por ejemplo, el sistema
podrá detectar eso,
Oye, esta no es una dirección de correo electrónico
válida, y eso es porque
podría verificar para ver si el símbolo at estaba
incluido en tu Entonces, si el símbolo del anuncio no está
ahí, entonces obviamente sabe,
Bien, lo que sea que esta persona haya escrito no puede ser una dirección de correo electrónico Entonces déjame mostrarte cómo
podemos escribir un
programa muy sencillo para
verificar si el símbolo at
está en la cadena. Entonces a partir de aquí, tengo mi correo electrónico
es igual a admin en labsar.com. Comprobemos para ver si
el símbolo del anuncio está en él, ¿de acuerdo? Voy a decir yo. ¿Bien? Si sé que no hemos hablado de esta afirmación
en particular si, sin embargo, no te preocupes, la
cubriremos mucho más detalle en
la siguiente sección. Pero por ahora, solo
tenga en cuenta que si es una declaración que Python usa para comprobar si
algo es cierto. Entonces voy a decir si y
ahora correo electrónico y luego punto, bien. Esta es la función que
podemos usar para verificar para ver si algo
existe en nuestra cadena. Entonces esa es la función find. Y ahora tenemos que especificar qué es exactamente lo que buscamos entre paréntesis y ahora
códigos, el símbolo At. Así que estamos tratando de
verificar si existe el símbolo at, y de una manera cómo podemos verificar
que efectivamente existe. Está en una cadena es diciendo que no
es igual a menos uno. Y luego agregamos nuestro colon. Entonces esto no equivale a menos
uno es una manera de decir, Bien, algo sí existe. ¿Bien? Entonces aquí mismo, estamos diciendo si en el correo electrónico
encontraste el símbolo del anuncio, y no es igual a menos uno. Entonces esto confirma que, sí, efectivamente, el símbolo del anuncio
está en nuestra cadena. Entonces ahora podemos hacer algo. Podemos decir imprimir,
y ahora entre paréntesis, podemos decir formato de correo electrónico válido. Entonces ahora si ejecuto mi
programa, ahí tienes. Formato de correo electrónico válido porque de hecho se encontró el símbolo del anuncio. Si elimino el símbolo del anuncio, y ahora vuelvo a ejecutar el programa, puede ver que no
se imprime nada porque el símbolo del anuncio ya no
está ahí. No es un
correo válido para Matt. Vuelvo. Vuelvo a agregar el símbolo del
anuncio, corro, y ahora se puede
ver que está funcionando de nuevo. Entonces, para darte un
resumen rápido, antes que nada, queremos
buscar el símbolo del anuncio en una dirección de correo electrónico que nos
proporcionó Entonces vamos a
decir si y luego estamos
buscando específicamente el símbolo add. Entonces, si el símbolo del anuncio
está presente y verificamos para ver si
está presente con el no igual a menos uno, así que si el símbolo de agregar
está de hecho presente, simplemente imprima el formato de correo electrónico válido. Así que toma nota de
la función find. Entonces eso es todo por el video,
gracias por verlo. Te veré en la siguiente clase.
16. Más manipulación de cuerdas: Bueno, vuelve, así que
déjame guiarte a través de algunas operaciones más
haciendo uso de la función
split, así
como alguna
buena indexación antigua Entonces tengo en mi
pantalla dos notas. Tengo una dirección de correo electrónico
y luego también AURL. Ahora, mirando
la dirección de correo electrónico, ¿y si quisiéramos extraer
el dominio específicamente? Entonces queríamos extraer labsyba.com y simplemente deshacernos del anuncio de Admin labsyba.com y simplemente deshacernos del anuncio de Admin
. ¿Cómo
vamos a hacer esto? Bueno, antes que nada,
asignemos un correo electrónico variable a B admin en labsyba.com. Bien. Entonces lo que voy a hacer
ahora mismo es que voy a crear otra variable que ahora sostendrá lo que
estamos buscando. Entonces voy a llamar a
ese dominio. Y ahora aquí es donde ocurre
la magia, ¿de acuerdo? Queremos dividir nuestra cadena, queremos separar admin
de labsyb.com Entonces entre admin y labsyb.com es ¿cuál
es el Entonces voy a decir
correo electrónico y ahora dividido, y ahora entre paréntesis,
¿de dónde vamos a separarnos? Vamos a separarnos
del símbolo At, ¿de acuerdo? Y ahora porque estamos
buscando el segundo elemento, cuando separes admin en
labsab.com del anuncio,
una parte será admin, la otra parte
será labsab.com, la otra parte
será labsab.com Entonces queremos ir con
el segundo elemento, y ese va a ser uno. Uno representará labsbdt com. Y ahora todo lo que tenemos que hacer
es simplemente imprimir un dominio. Y si ejecuto un programa, entonces es labsbadt Si cambié uno
a cero en su lugar, esto representará ahora
el primer elemento, que va a ser admin. Entonces si
vuelvo a ejecutar un programa ahora mismo puedes ver que ha cambiado a admin. Así que cada vez
que intentas dividir una cadena en dos, usando la
función split, antes
que nada , quieres indicar, Bien, de
dónde quieres
comenzar la división. En este caso, ahora mismo,
establecemos a partir del símbolo del anuncio. Entonces justo abajo en el medio, la izquierda estará el valor
índice de cero. A la derecha estará
el valor de índice de uno. Y como estamos buscando
el dominio específicamente, cambiamos de cero a uno. Volvemos a correr, y ahí
vas tenemos labcyba.com. Ahora bien, ¿qué pasa con el segundo
ejemplo aquí la URL? ¿Qué es exactamente lo
que buscamos aquí? Digamos que queríamos extraer
el propio archivo real. Entonces no nos interesa todo gctpslabs.com, FurslashPat, FurslashT Todo lo que buscamos es
simplemente el nombre del archivo. ¿Cómo podemos extraer
archivo de esto? Entonces lo que voy a hacer
muy simple es decir, URL es igual, y
déjame agarrar esto. Déjame copiar eso. Y voy a pegarlo.
Y ahí tienes. Bien, entonces otra vez, voy a crear una nueva variable que
ahora mantendrá el valor de
lo que estamos buscando. Llamemos a este el nombre del
subrayado del archivo ahora será igual a URL, ¿verdad? Y ahora punto split, y ahora mira esto. Mirando la URL, ¿de acuerdo? Esta URL completa. ¿Qué opinas ¿Qué
símbolo crees que podríamos usar para dividir la cadena
en múltiples partes? Sí, debería ser
obvio que va a ser el slash delantero, Porque se puede ver
ahí mismo que está en todas partes. Así que vamos a
dividir nuestra cadena. Vamos a escupir nuestra URL
usando la diagonal hacia adelante. Y ahora, ¿cómo podemos
apuntar al archivo? ¿Recuerdas la indexación
negativa? Bueno, partimos desde
el final de nuestra cadena. Entonces en este caso, ahora mismo,
qué estamos buscando, estamos buscando el
primer elemento desde el final, y ahora eso va a
ser negativo ¿qué? Negativo uno. Entonces
va a comenzar desde archivo. Va a empezar de
derecha a izquierda, ¿verdad? Entonces ahora, todo lo que tenemos que
hacer es simplemente imprimir el nombre del subrayado del archivo Y deberían hacer el truco. Sigamos adelante y
ejecutemos el programa. Y ahí tienes.
Tenemos el nombre del archivo. Entonces, al hacer uso de
la función split y también una indexación negativa, pudimos
apuntar específicamente al nombre del archivo Déjenme darles
un ejemplo más. Y aquí, vamos a
extraer algunas cadenas. Sin usar la función
split, solo
vamos a
usar el valor del índice. Entonces déjenme volver a proporcionar la dirección de
correo electrónico, y voy a decir
admin en labsba.com Bien, entonces, ¿
y si
quisiéramos extraer tanto el nombre de usuario como el dominio? Entonces queremos extraer el nombre de
usuario que es admin, y luego el dominio
que es labsyb.com ¿Cómo crees que podemos hacer esto? Bueno, antes que nada, puedo
decir que mi nombre de usuario
va a ser igual al correo electrónico y ahora recuerda cómo funcionan
los índices cuando tengas tu inicio y luego el final. Así que queremos comenzar desde el principio mismo
de nuestra cadena. Entonces vamos a decir colon. Vamos a
dejar el lado izquierdo en blanco porque vamos a empezar desde el
principio. Y ahora veamos. A va a ser el índice
número cero, ¿verdad? Entonces A es cero, D es uno, M es dos I es tres, N es cuatro, y por supuesto, el símbolo add es cinco. Así que voy a decir por
aquí ahora mismo, cinco, ¿de acuerdo? Y entonces puedo decir dominio
es igual al correo electrónico y ahora dentro, queremos comenzar de
lo
que es el sexto índice, que va a ser L, dos puntos y luego dejar
eso en blanco porque
vamos todo el camino hasta el final de la cadena, y ahora
esto debería funcionar. Entonces todo lo que tenemos que hacer
es decir imprimir. Ahora aquí,
digamos, usa un nombre. Bien, y luego, usa un nombre, y luego imprime
paréntesis dominio de dos puntos. Bien. Dominio com.
Y ahí tienes. Vamos a ejecutar el programa,
y ahí está. El nombre de usuario es Admin. El dominio
es lobsaba.com. Ya. Pero aguanta solo un minuto. Antes de reventar el champán, hagamos otra prueba, ¿de acuerdo? Voy a cambiar Admin
aquí a no lo sé. Digamos, Alex, por ejemplo. Nunca ejecutes el programa. Uh oh, ta ta,
da, da, da, da, da, da, da, da. Nosotros sí tenemos un problema. Se puede ver ahora mismo que el
programa ha funcionado mal. Ya no funciona correctamente. En lugar de usar el nombre
Alex, tenemos a Alex en. Y en lugar de labsyb.com,
tenemos absyba.com. Lo que está pasando aquí. Verás, al tratar de
extraer nuestras cadenas siendo muy específicos con los valores de índice a los que
queremos apuntar, el programa
va a
depender mucho de la dirección de
correo electrónico real, teniendo el número correcto
de caracteres tanto
antes como después del símbolo at. Entonces
depende mucho de eso, pero no queremos que queramos
que el programa sea lo suficientemente
flexible como
para poder extraer siempre con precisión tanto
el nombre de usuario como el dominio independientemente de cuán corta o larga sea
la dirección de correo electrónico real. Entonces, ¿qué podemos hacer? Bueno, recuerda
que el símbolo del anuncio es donde está toda la acción. A la izquierda del símbolo
add está nuestro nombre de usuario a su
derecha es el dominio. Entonces podemos apuntar específicamente al valor
del índice del símbolo At. ¿Y cómo lo hacemos? Para el nombre de usuario, correo electrónico,
ahora mismo, De nuevo, vamos a dejar
la primera parte de la columna en blanco porque estamos empezando desde el
principio, ¿no? Y ahora para apuntar al símbolo real
en, es el valor del índice. Voy a decir correo electrónico
otra vez y ahora índice de puntos, y ahora entre paréntesis
codificar el símbolo at. Entonces ahora estoy diciendo que el nombre de usuario siempre comienza siempre comienza
desde el principio mismo de la cadena y luego termina
una vez que hayas alcanzado el valor
de índice del símbolo at. De igual manera, podemos hacer algo muy parecido con el dominio. Podemos decir dominio. Bien, comencemos
desde el principio aquí, índice de puntos de correo electrónico. Y ahora, ¿a qué nos
dirigimos de nuevo? Nos dirigimos al símbolo del anuncio. Sin embargo, específicamente queremos apuntar
al
primer carácter, el primer índice después del símbolo add. Entonces, ¿qué crees que
vamos a hacer? Nosotros la buena gente, vamos a decir
más uno. Más uno. Entonces ahora estoy diciendo, Bien, empieza desde el valor del índice de At, pero luego agrega uno a él. Entonces va a ir a
AD y luego agregar uno. Bien, ahora, labs.com. Entonces ahora si ejecuto el programa, ahí tienes.
Funciona axlabs.com Si cambio a Alex de nuevo a Admin, y ejecuto el programa,
puedes ver que funciona de hecho, intentemos algo
completamente diferente, ¿de acuerdo? Digamos que Jack Daniels en superyahoo.com,
algo raro, ¿verdad? Vamos a ejecutar el programa,
y ahí tienes. Jack Daniels y luego
domainsoperyahoo.com. Entonces así es como extraer de manera exitosa
y eficiente tus cadenas sin
hacer uso de la función split simplemente se
usan los valores de índice, y etiquetamos en él específicamente el valor de índice del
símbolo add porque recuerda, nuevamente, el símbolo add es
donde está toda la acción. A la izquierda del
símbolo del anuncio hay un nombre de usuario a su derecha, está el dominio. Entonces espero que hayan disfrutado el video. Gracias por ver. Te
veo en la siguiente clase.
17. Introducción a la sección del flujo de control y bucles: Oficialmente a la tercera sección, y ahora el teléfono realmente comienza. Ahora, estamos empezando
a dar una especie de paso más profundo o un paso
más grande en el mundo de la programación Python porque aquí vamos a estar hablando de flujo de
control y bucles. Ahora, en lo que va de las dos secciones
anteriores, hemos hablado de
cadenas y enteros, y los programas han sido bonitos en su mayor
parte, básicos, ¿verdad? Puedes o
tal vez tener una entrada o nos proporcionamos
alguna cadena y enteros, y luego decimos, Bien,
voy a hacer esto
y hacer esto y hacer eso y
luego simplemente imprimir, ¿verdad Pero ahora con
flujo de control y bucles, si quisiéramos decir, Bien, si algo es esto, entonces hagamos eso. Pero si algo
no es esta cosa, hagamos otra cosa. Esto es flujo de control y bucles. Además, ¿y si, por ejemplo, tuviéramos una lista? ¿Bien? Podría ser
una lista de nombres, una lista de libros, una lista
de contraseñas, ¿verdad? Y entonces queríamos, como,
pasar por cada contraseña esa lista y hacer
algo, ¿verdad? A lo mejor queríamos tomar cada
contraseña y cifrarla, o tal vez queremos tomar cada contraseña y
luego verificar para ver si la contraseña es
realmente fuerte o débil dependiendo de varios
tipos de condiciones, vamos a cubrir
eso en esta sección Esta va a ser una
de las secciones principales este curso
en particular, y estoy muy
emocionada de enseñarte sobre el flujo de control y
los bucles. Empecemos.
18. Introducción a los algoritmos: Vamos a tomar un descanso
de Raplt y hablar un poco de algoritmos
porque lo creas o no, realidad
vamos
a empezar a trabajar con conceptos
un poco más avanzados
en la programación Python Y es muy, muy
importante que entiendas qué
son los algoritmos porque son vitales, no solo para Python, sino cualquier tipo de
lenguaje de programación para el caso. Ahora bien, si tuviera
que darte algo así como la definición estándar
de lo que es un algoritmo, básicamente es como un conjunto de instrucciones que deben
seguirse para llegar a un resultado
en particular, ¿de acuerdo? En este caso, ahora mismo, se
puede ver este texto. He escrito algunas cosas ahí. El primer enunciado dice, si la computadora está
funcionando rápido, Finalizar. Ahora bien, ¿a qué me refiero aquí?
Simplemente digo eso, mira, si nuestra computadora está
funcionando muy, muy bien, está funcionando
muy, muy rápido. No hay necesidad de
verificar nada. Está bien, ¿verdad?
Por eso dije terminar. Pero me doy cuenta en la
tercera línea, dije, lo contrario, también podrías decir
algo así como trasero, ¿verdad? Pero en el lenguaje de programación, no
usamos sino, usamos se. ¿Bien? Entonces se básicamente está
significando que si la sentencia anterior no
es correcta, así que si la computadora
no está funcionando rápido, Bien, entonces ¿qué
tenemos que hacer ahora Tenemos que antes que nada,
verificar si hay algún virus. Y luego después de
eso, podríamos necesitar desinstalar programas
innecesarios, y luego eventualmente podríamos
necesitar aumentar la rampa. Entonces, si seguimos
estos tres pasos, se
garantizará que
una computadora funcione más rápido. Esto es un algoritmo, ¿verdad? Y dos palabras clave
aquí son el IF y s. vamos a
estar trabajando bastante con esto en este curso. Y si alguna vez
vas a trabajar con otro tipo de lenguaje de
programación, siempre
te encontrarás con declaraciones IL. Estos son los
bloques de construcción fundamentales de cualquier programa. Espero que entiendas lo que hicimos aquí. Bastante
sencillo. Voy a hacer esto
un poco más
avanzado, ¿de acuerdo? Sólo un poquito, ¿verdad? Déjame abrir la segunda pestaña. Así que imagina que te vas a
vestir según el clima. ¿Bien? Entonces, la
primera declaración, hemos establecido
un escenario, ¿verdad? Entonces nuestro programa está
comprobando para ver qué debemos ponernos en
función del clima. Entonces tenemos el
primer resultado. Si el clima es soleado, Bien, bueno, podemos
usar nuestras gafas de sol. No obstante, fíjese en la tercera línea, va de otra manera si
ya no es sólo otra cosa. ¿Por qué? Bueno, porque el clima
puede venir en diversas formas. Podría estar soleado,
podría ser lluvioso, podría estar nevando,
podría estar nublado Hay muchas más
opciones, ¿verdad? En el primer documento aquí, sólo
hay dos condiciones. La primera condición es, Bien, ¿la computadora
está funcionando rápido o no está
funcionando rápido? Eso es. Nada como, Oh, ¿
la computadora está funcionando
al 25% de su capacidad? ¿Funciona al 50% de su capacidad? No tenemos ninguna otra
condición. Son sólo dos. O el compter
está funcionando rápido o no
es ni A ni B. Por
eso yo
funcionaría perfectamente aquí No obstante, en este ejemplo, tenemos más de
dos opciones porque, nuevo, estamos lidiando
con el clima. Entonces, si hace sol, podemos usar gafas de sol. De lo contrario, si está lloviendo. Bien, podemos tomar un paraguas. Y entonces si está nevando, podemos ponernos un abrigo
pesado, ¿verdad Pero ahora mira la
última línea. Simplemente dice otra cosa. No más si más. Porque básicamente estamos
concluyendo el programa aquí. Estamos diciendo, Bien, hemos
comprobado si hace sol, hemos comprobado si está lloviendo, hemos comprobado si está nevando Entonces, si no es ninguno de estos tres va a ser
solo un día normal. Así que si no, solo vístete normalmente. ¿Bien? Entonces, el primero aquí nuevo es simplemente EL porque
hay dos condiciones. El segundo aquí, sí
tenemos la declaración s if porque hay
más de dos condiciones. De hecho, hay cuatro resultados
diferentes
basados en el clima. Por eso ya no podemos trabajar
sólo con los I Ls. Tenemos que introducir
la declaración s if. Entonces ojalá,
entiendas por qué
usamos la declaración
Is aquí y por qué usamos else si aquí. Si no lo haces, tal vez
ojalá una vez que comencemos a crear programas reales, usando los algoritmos, lo
entenderás mucho mejor entonces. Pero esto ha sido una
introducción al mundo de los algoritmos así como a las declaraciones
Is else if. Gracias por ver. Te
veré en la siguiente clase.
19. Declaraciones If Else: Entonces, en el video anterior, discutimos brevemente
los conceptos de algoritmos así como
las declaraciones Is if. Ahora, vamos a
ponerlo en acción. En realidad vamos a
escribir un programa que solicitaría un número
1-9 al usuario Ahora bien, si el número es
mayor que cuatro, vamos a
decir, ¿por qué tanto? De lo contrario. Es decir, que si son cuatro o menos, vamos a decir
por qué tan poco. Ahora, la última línea, he difuminado por una razón en particular porque una vez que escribamos este primer programa, vamos a agregar
una condición extra No quiero mostrarte cuál es
esa condición extra todavía. Entonces, centrémonos en escribir
este programa, ¿verdad? Así que déjame arrastrar esto. Bien. Y déjame
simplemente quitarle esto. Bien. Entonces la primera parte
del programa es que queremos solicitar un
número entre 129. Entonces, ¿qué podemos hacer aquí? Bueno, antes que nada, podemos crear una variable llamada N. Bien,
para el número. Y vamos a pasar. Recuerda, trabajamos con
la función de entrada. ¿Bien? Entonces voy a
decir entrada porque esa es la función que
solicitaría entrada al usuario. Entonces voy a decir entrada, y voy a decir ingrese
un número entre 129. ¿Bien? Primero que nada, asegurémonos de que esto esté funcionando. Bien, ingresa un número 1-9, déjame crear un
poco de espacio 1-9 Corre de nuevo. Bien. Bien. Entonces la primera línea funciona. Ahora, queremos comprobar si el número está entre o
es menor que cuatro, ¿verdad? Entonces voy a
decir si está bien. Y luego el entero porque queremos convertir cualquier
número que nos haya proporcionado, queremos
convertirlo a un entero porque el usuario podría
ser muy travieso. Podrían
decidir proporcionar, digamos, 1.1, 4.5, 7.6,
algo así. Así que queremos mantener
todo como un entero. Así que voy a envolver nuestra variable ahora mismo en
la función integer, ¿verdad? Entonces voy a decir I entero N, ahora espacio y luego el
símbolo para mayor que mayor que cuatro, Bien. Y ahora, presta
mucha atención. Voy a añadir el
doble colon, ¿de acuerdo? Necesitas agregar esto siempre que estés trabajando con tus
declaraciones eL, ¿de acuerdo? Así que voy a decir eso. Y ahora, por defecto, en realidad, Python ha escrito
esta línea para mí, pero voy a decir
por qué tanto. ¿Bien? Ahora, entra, y ahora
voy a decir otra cosa si, sin embargo, Bien. Y ahora voy a decir se. Y luego nueva sangría de línea, imprimir. Y entonces voy
a decir, y tan poco. Bien. Entonces voy a seguir
adelante ahora mismo. Oh, por cierto,
asegúrate en tu s
también tienes el doble
colon también, ¿de acuerdo? Sigamos ahora mismo y ejecutemos el programa, y veamos. Entonces ingresa el número 1-9, voy a decir seis Pulse Intro. Se puede ver
ahí mismo, en realidad funciona. Por qué tanto. Volvamos a ejecutar
el programa. Voy a decir tres,
tres ahí mismo, y
luego dice por qué tan poco. Así que en realidad funciona
como puedes ver. Ahora, voy a repasar
esto una vez más, ¿de acuerdo? Entonces, antes que nada, la mitad N, que va a ser
la variable que
aceptará la entrada del usuario, y la entrada en cuestión, ingresan un número entre 129. ¿Bien? Entonces ahora vamos
a crear una condición que verificará para ver
el valor de ese número. Así que hemos decidido convertir
la entrada a un entero. Por eso tenemos el INT. Una pregunta que podrías tener
aquí es, espera un minuto, Alex. Anteriormente, cuando
teníamos una función dentro de otra función, tenemos que usar los
corchetes, ¿verdad? El es, esto no es
exactamente una función, ¿de acuerdo? Es más un algoritmo, más como un bucle solo comprobando para ver el
valor de algo. No es una
función real en sí misma. Por eso no tenemos el entero envuelto
entre paréntesis, ¿de acuerdo? Entonces va a
comprobar si el entero, si es mayor que cuatro, bueno,
imprima, ¿por qué tanto? Se, es decir, que
si el número es cuatro o menos de cuatro
imprimir, por qué tan poco. Se puede decir que funciona bien. Y lo único a lo que
hay que prestar atención sería el
doble colon después los cuatro y también después
del s. Y entonces también es muy buena práctica que
siempre que estés caminando con declaraciones de
IL o s si
tienes buena sangría, yo no hice esto, ¿ No tenía mis declaraciones
impresas directamente debajo de las declaraciones
E y L. Esto no es nada bueno. Esta es una sintaxis de
programación muy, muy pobre. Así que siempre quieres tener tu sangría
correctamente, Téngalo siempre que
esté trabajando con las declaraciones de EL. Bien. Ahora voy a traer vuelta nuestro programa.
Y mira eso. He agregado una
condición extra diciendo que ¿y si el número es un número específico,
que es cinco Bueno, queremos decir Bingo. ¿Bien? Entonces, ¿cómo exactamente
vamos a hacer esto? ¿Bien? Déjame arrastrar esto. Bien. Ahora, mira esto. Voy a venir aquí donde dice,
imprimir por qué tanto, y voy a presionar Enter porque queremos
agregar el s I
entre la declaración de apertura Si
y la declaración de cierre s
, ¿bien? Entonces ahora voy a decir L, esta es la
forma corta de escribir s si. Entonces, en lugar de decir sf, usamos LF en Python. ¿Bien? Entonces L si el entero N, es igual o
lo siento, el entero N. Si es igual a cinco, el igual va a
ser doble seno igual, no solo uno, ¿bien? Entonces de lo contrario si el entero
proporcionado por el usuario es de cinco, y ahora voy
a agregar los
dos puntos dobles y luego voy a decir, perdón, voy a decir imprimir. Y luego entre paréntesis, Bingo. ¿Bien? Entonces voy a ir
a eso ahora mismo. Estamos en el programa. Y ahora vamos a revisar para ver
si esto realmente funciona. En primer lugar, voy
a escribir tres, ¿de acuerdo? Bien, así que sigue funcionando. ¿Por qué tan poco? Bien. Vamos a
probar ocho. Por qué tanto. Bien. Y ahora, si digo cinco y
presiono Enter, ¿adivina qué? No es decir bingo, sigue diciendo por qué
tanto. ¿Quieres saber por qué? Porque el programa Python
ejecuta línea por línea. Ahora, mira la
jerarquía aquí dentro. La primera condición
que Python está comprobando es ver si el número
es mayor que cuatro. Y porque cinco es
mayor que cuatro, inmediatamente
dice:
Bien, ¿por qué tanto? Ni siquiera va
más abajo para comprobar si el número es igual a cinco porque la primera declaración básicamente
está diciendo:
Oye, si el número es
mayor que cuatro, entonces imprime por qué tanto. Entonces, para demostrarte esto, lo que voy a hacer
aquí es esto, ¿de acuerdo? Voy a decir que vamos a cambiar
la jerarquía aquí dentro. Entonces comprobaremos, primer lugar, si el entero
es en realidad igual a cinco. Bien, que eso sea lo
primero, comprueba. Y ahora por aquí, vamos a comprobar para ver si el
entero es mayor que cuatro. Así que básicamente acabo de
cambiar la jerarquía. Entonces lo primero que
va a comprobar ahora mismo es si el entero es
en realidad igual a cinco, va a decir bingo, lo
contrario si no es igual a cinco y es
mayor que cuatro, vamos a decir y tanto. Y entonces si
no es igual a cinco, y si no es
mayor que cuatro, entonces imprima y tan poco. ¿Bien? Vamos a ejecutar el programa. Entonces voy a
venir aquí ahora mismo, correr déjame antes que nada, agrega cinco ahora y mira, Entra, y ahí tienes. Bingo. De hecho, trabajé. Volvamos
a ejecutar el programa. ¿Y si escribí dos? Entra, ¿por qué tan poco? Uno, una vez más,
vamos con siete. Entra, ¿por qué tanto? Ya se puede ver, funciona. Entonces, la jerarquía de tus
comandos es extremadamente importante siempre que
estés trabajando con Python o
Pgamming en general Cuando estés comprobando
las condiciones, siempre ten en cuenta que en Python ha conseguido una
condición que está satisfecha, inmediatamente
imprimirá los resultados. No va a
ir más abajo en
las líneas restantes de tu programa. Entonces la jerarquía de
tus condiciones, las condiciones que se comprueban, tus comandos es
tan, tan importante. Y luego, claro, también
este poco ya sabes, saber dónde agregar los
dos puntos, cosas así Esto es algo a lo que
eventualmente te acostumbrarás. Podría ser un poco abrumador
al principio, pero a medida que empieces a
escribir más programas, eventualmente
te
acostumbrarás a ellos. Entonces eso es todo por trabajar con
las declaraciones E L L if. Gracias por ver. Te
veo en la siguiente clase.
20. Comprobador de contraseñas sencillo: Bien, escribamos
nuestro primer fragmento de código relacionado con la
ciberseguridad y este comprobará para ver si contraseña de
un usuario terminó es
realmente válida o no Eres más que bienvenido a intentar escribir el código por tu cuenta. Si no, déjame mostrarte
cómo vas a hacer esto. Lo primero que tenemos que
hacer es
indicar cuál es la contraseña. Voy a llamar a la variable aquí se almacena en
la contraseña de puntuación. Vamos a proporcionar un valor
para la contraseña. Voy a ir con
algo muy, muy genérico. Digamos, contraseña
uno, dos, tres. Esta va a ser
la contraseña real. Por cierto, no estoy seguro
si lo he mencionado antes, pero en Python, si quisieras agregar un comentario
o una pista en tu código, puedes hacerlo usando el símbolo de hashtag y
luego escribiendo tu comentario. A lo mejor ya lo he mencionado
antes. Si no, bueno, ahí tienes. Bien, entonces iniciar contraseña aquí va a ser la
contraseña uno, dos, tres. Entonces ahora necesitamos pedirle al
usuario que nos proporcione la contraseña. Y luego una vez que nos
proporcionen la contraseña, entonces
podremos ejecutar una
declaración EL que verificará para ver si la contraseña que han escrito es realmente
correcta o no, si es correcta, podemos
decir acceso concedido Si no, diremos acceso denegado. Entonces lo primero que voy
a hacer ahora mismo es que
voy a obtener la entrada del usuario. Permítanme agregar mi
comentario y decir obtener la entrada
del usuario como primer paso. Lo que vamos a hacer ahora mismo es
que podemos llamar a la entrada del usuario. Podemos llamarlo la contraseña
ingresada. Esta será la variable
que almacenará la entrada. Entonces ahí mismo, me gusta la sugerencia que
Python nos ha dado. Simplemente dice que la
contraseña ingresada es igual a imputa y luego vamos a pedirle
al usuario que proporcione
su contraseña Lo siguiente que tenemos que
hacer ahora mismo es
ver si las
contraseñas realmente coinciden o no. Queremos asegurarnos de que
lo que escriban aquí
va a coincidir con la contraseña
que tenemos almacenada. Por cierto, es increíble cómo no sé si ves exactamente lo mismo
en tu propia pantalla, pero Python literalmente solo está escribiendo el código completo para mí. Te lo prometo, esta es la primera vez que
en realidad escribo este código en replet. Te prometo que no he
escrito este código antes. Es increíble cómo es tan
inteligente, es tan inteligente. Sabe exactamente
lo que quiero escribir, y eso es exactamente
lo que quiero hacer. Quiero decir, si la contraseña terminada es igual a la contraseña almacenada.
¿Qué vamos a hacer? Vamos a imprimir. Entonces entre paréntesis,
se concedió el acceso a cadenas , perdón por eso. S, ¿qué vamos a imprimir? Vamos a imprimir
Brackets, abrigos. Acceso denegado. Y ahí está. Déjame quitarme el
abrigo extra ahí mismo. Ahí vas. Ese es
nuestro código ahí mismo. Muy sencillo, muy
directo. Vamos a probarlo. Voy a correr y ahora voy a
pedir la contraseña. Vamos a probar James 123. ¿Eso funcionó? No,
acceso denegado. Bueno, no
funcionó. Vamos a correr. El programa una vez más. Vamos a probar la contraseña. Contraseña, uno, dos,
tres, presiona Enter, y luego vas, se
ha concedido el acceso, nuestro código realmente
funciona correctamente. Por supuesto, esto es solo un bloque de código
muy simple. No es todo el
programa en sí, pero este es el primer
paso para crear un verificador de
contraseñas más completo para. Gracias por
ver el video. Te veré en
la siguiente clase.
21. Introducción a los bucles: Hablemos ahora de loops, que son fácilmente uno de los aspectos más importantes de cualquier tipo de programa o lenguaje de
programación. Pero, ¿qué son exactamente? Bueno,
normalmente se utilizan para repetir un bloque de código varias veces hasta que se cumpla una
condición especificada o para un número determinado
de iteraciones En otras palabras, un
bucle se ejecutará hasta que todos los elementos de una secuencia o
lista hayan sido procesados, o el bucle
continuará ejecutándose mientras una condición sigue
siendo verdadera o se satisface. Entonces básicamente, es un bucle. Voy a seguir y seguir y seguir y seguir hasta que algo
finalmente suceda. Ahora, son muy
importantes porque nos
ayudan a automatizar tareas
repetitivas Entonces, en lugar de que repetir la misma tarea una y
otra vez, podemos simplemente escribir
un bucle que ejecute esa tarea por nosotros
automáticamente, y por supuesto, usamos bucles para construir programas
eficientes que se adapten en función de condiciones
dinámicas. Y cuando se trata de bucles, hay dos tipos principales. El primero va
a ser el bucle de cuatro. Mira esto, ¿de acuerdo?
Tenemos una lista de 129, ¿de acuerdo? Números. Y podemos escribir un
programa muy sencillo que diga:
Oye, imprime cada número. Entonces básicamente imprima uno, dos, tres, cuatro, cinco, seis,
siete, ocho, nueve. Pero en lugar de que tengamos que
escribir cada línea individual
para cada número individual, a escribir cada línea individual
para cada número individual , ya sabes, imprimir
una, segunda línea, imprimir dos, tercera
línea, imprimir tres, solo
podemos escribir un bucle
que recorra todos los números de esta lista y luego imprimir esos
números hasta que, por
supuesto,
se haya impreso el último número , que es nueve. Esta será la definición o un ejemplo más bien
de un bucle de cuatro. El segundo es el bucle W. Entonces digamos, por ejemplo, la hora es entre las 12:01 P.M. Y las 4:59 P.M. Así que siempre y cuando la hora
del día esté entre este rango, digamos, buenas tardes Observe la diferencia
entre las dos estructuras. ¿Bien? El
primero aquí, que es el bucle fol ya tiene, como, una
lista o secuencia predefinida. Y mientras tengamos ítems en
esa lista en particular,
entonces haz algo. El bucle wil es un
poco diferente
porque dice, Bien, siempre y cuando esta condición
siga satisfecha o esta condición
siga siendo cierta, ¿cuál es la
condición aquí? Siempre y cuando el tiempo sea
entre las 12 1:00 P.M. Y las 4:59 P.M. S buenas tardes. Bien. Al cierre, los bucles deben tener un punto final o
se ejecutarán para siempre. Básicamente, un bucle puede
aplastar todo el programa. Veamos el
ejemplo aquí dentro. ¿Y si los números de esta lista fueran del número uno al
infinito, verdad? Eso significa que el programa
continuará imprimiendo los números una
y otra y otra vez, y nunca se detendrá. Esto
bloqueará fácilmente el programa. Y qué pasaría si en este
ejemplo ahora mismo, no
hay un periodo de
tiempo especificado. Y si el programa solo
revisa para ver si es durante el día o en cualquier momento durante la
noche, digamos buenas tardes. Bueno, siempre va
a simplemente imprimir
buenas tardes, buenas tardes, buenas
tardes, buenas tardes. Y eventualmente
bloqueará el programa, también. Entonces es muy, muy importante que siempre que
estemos trabajando con bucles, siempre debe
haber
cierto tipo de condición que eventualmente se
satisfará para que ese bucle termine. De lo contrario,
bloqueará el programa. Gracias por
ver el video, los
veo en
la siguiente clase.
22. Bucles para y mientras: Ahora vuelve a nuestro Fideicomisario plt. Y
te voy a dar dos ejemplos. Uno para el bucle cuatro y
otro para el bucle Wil. Entonces, para crear
nuestro bucle de cuatro
, primero que nada,
creamos la lista. En este caso, ahora mismo,
voy a proporcionar el nombre de la lista
como nombres, ¿de acuerdo? Igual, y entonces voy
a tener mis corchetes aquí. Y agreguemos algunos nombres. Entonces tengo a Alex. Tengo a Nancy. Y yo tengo a James. Y digamos, por último
pero no menos importante, tengo a Violetta Honestamente, solo se me
ocurrió ese nombre. Violetta. Bien. Entonces tenemos una lista aquí mismo de
cuatro nombres diferentes, ¿verdad? Alex, Nancy, James
y luego Violeta. Una cosa que puedo hacer
ahora mismo es que podemos crear una variable que represente
cada ítem de la lista. Algo así como cómo hemos estado asignando valores
a variables como, ya
sabes, X es igual a
cuatro, Y es igual a siete Ahora puedo entrar aquí
y luego simplemente decir cuatro. ¿Bien? Y ahora voy a decir cuatro X. En nombres. ¿Bien? ¿Cuáles son los que están aquí
? Permítanme agregar el
colon ahí mismo. Entonces lo que hemos hecho
con esta afirmación aquí es que estamos diciendo, Bien, vamos a usar X para representar cada
nombre en esta lista. Entonces X será igual a Alex que será el
primer bucle que correrá. El segundo bucle X ahora será igual a Nancy, correrá. El tercer bucle ahora
será X igual a James. Y luego finalmente,
el último bucle será X es igual a Violeta. Eso es básicamente lo que hace
esto aquí. Entonces estamos diciendo para X en nombres. Y ahora tenemos que
decirle al programa, Bien, ¿qué debemos hacer? Bueno, deberíamos
imprimir el nombre X. Bien. Yo voy a
correr, y ahí tienes. Alex, Nancy James y Violetta. Pero y si quisiera darle sabor a este programa un
poco y
digamos algo como, ya
sabes, buenos días, y luego el nombre
de esa persona. Entonces tendremos
buenos días y Alex. Buenos días, Nancy.
Buenos días James. Y, claro,
buenos días Violetta. ¿Cómo vamos a hacer esto? Bueno, dentro de la función
print, voy a agregar una cadena
que en primer lugar va decir buenos días. Yo bien. Y entonces
vamos a tener la coma, que, por cierto,
es solo parte de la impresión en sí misma. No es parte
del programa real, si sabes a lo que me refiero. Es parte de la cuerda. Básicamente lo que estoy
tratando de decir. Podemos hacerlo sin el coma también, de
hecho, ¿sabes qué? Déjame quitar la coma,
solo para que no te confunda. Así que voy a decir
buenos días, ¿de acuerdo? Y luego voy a agregar un espacio porque
queremos que sea espacio
entre la cuerda real, buenos días, y luego
el nombre de la persona. Por eso he agregado el
espacio ahí mismo, ¿de acuerdo? Y luego aquí mismo, voy a agregar el
signo más y luego X. Así que básicamente adjuntando
la cepa
buenos días al nombre
de la persona. Vamos a ejecutar el programa,
y ahí tienes. Buenos días, Alex.
Buenos días, Ansay Buenos días, James.
Buenos días Violetta Ahora bien, si elimino este espacio porque quiero que
entiendas esto muy bien. Si elimino este espacio ahora mismo y vuelvo a ejecutar el programa, ya
puedes ver
que está todo revuelto, ¿de acuerdo? No hay espacio entre la mañana y luego el nombre de la persona. Por eso, una vez más,
agregué el espacio aquí mismo entre la G y la
comilla de cierre, ¿de acuerdo? Entonces, quiero decir, una vez más. Y ahí tienes.
Este es un ejemplo de un bucle de cuatro muy sencillo. En primer lugar, creamos
una lista de nombres. Asignamos esta lista completa aquí
mismo a los nombres de las
variables. Y entonces ahora necesitamos crear otra variable
que represente cada ítem, cada nombre en esta lista. Entonces establecemos cuatro X en la lista llamados nombres y ahora la función
imprimir Buenos días, más el nombre de la
persona en esa lista. Este es un ejemplo
de tus cuatro Loop. Ahora, lo que voy
a hacer es que vamos a crear un bucle salvaje. Ahora, para hacer esto,
bajemos aquí. Y sí, podemos ejecutar
múltiples programas y funciones dentro del mismo archivo
exacto, ¿verdad? Entonces lo que voy a
hacer ahora mismo es que
voy a crear algo
llamado contador. Bien, entonces contador es igual a cero. Ahora bien, ¿qué estoy haciendo
aquí exactamente? ¿Qué es este contador? Recuerda que con los bucles de Wil, seguirán funcionando
mientras se siga
satisfaciendo
una condición. Esa es la diferencia entre un bucle de
caída y un bucle while. Con el bucle de otoño, tenemos
una lista de artículos, ¿verdad? Entonces el bucle simplemente
recorrerá todos los
elementos de esa lista. Pero un bucle while, tiene que
haber algún tipo
de condición que se
presentará. Y entonces le vamos a
decir a Python que, Hey, mientras esta condición
en particular siga satisfecha,
ejecute el loop. Entonces la condición aquí en
este momento es que mientras nuestro contador
sea menor que digamos tres, ¿ves ahora que estamos diciendo, oye, siempre y cuando nuestro contador, siempre y cuando el número de
aquí sea menor que tres, siga haciendo algo. Y se puede ver Python
como que ya
nos da un indicio de a dónde ir a continuación. Bueno, voy a
decir print print, y luego voy a agregar un
texto ahí mismo, la cadena. Hola. ¿Bien? Y ahí tienes. Ahora bien, lo que estamos diciendo aquí
es empezar de cero, ¿de acuerdo? Comienza desde cero
y luego verifica para ver si cero es menor que tres. Si son menos de tres,
entonces imprime Hola. Sin embargo,
en realidad no hemos terminado. ¿Por qué? Bueno, porque no le
hemos dicho específicamente a Python que agregue un nuevo
número al contador. Entonces, en vez de cero, ahora se convertirá en uno. Comprueba si uno
es menos de tres y luego imprime hola. Aún no se lo hemos dicho a Python porque un bucle
puede ir de cualquier manera. Podemos o seguir
sumando o uno, dos, tres a cero, o podríamos ir en dirección
opuesta, y luego en lugar de que
cero vaya a uno, podría ser cero
yendo a menos uno, menos dos, menos
tres, menos cuatro. Y en ese tipo de escenarios, esos números siempre
serán menores de tres, y la condición nunca se
cumplirá o
siempre se cumplirá, más bien, y entonces eso
chocará el programa. Entonces necesitamos decirle a Python
explícitamente que, Oye, una vez que hayas ejecutado el
primer bucle donde cero es menor que tres, agrega uno al contador. Entonces voy a entrar
ahora mismo y voy a decir contador y luego
más equivale a uno. Esta es nuestra forma de decir, Bien, Python, el comienzo mismo
del bucle será cero. Comprueba si cero
es menor que tres. Si son menos de
tres, imprime hola y luego ahora agrega
uno al mostrador. Por lo que ahora será uno
a menos de tres. Python dice, sí, uno es de
hecho menos de tres. Se va a poner hola. Se va a agregar uno de nuevo, así que ahora uno se convertirá en dos. Python va a comprobar, Bien,
son dos menos que tres, sí, son menos de
tres, imprimir hola. Y luego se va
a añadir una de nuevo. Entonces ahora se convierte en tres. Y luego finalmente, Python
dirá eso, Bien, tres no es menor que tres
porque tres es igual a tres, y luego terminará el bucle. Derecha. Sigamos ahora
mismo y corramos. Y ahí tienes.
Hola, hola, hola. puede ver ahí mismo
que se detuvo en tres bucles porque el
primer bucle será para cero. El segundo bucle será para uno. El tercer bucle será para dos. Si vine aquí y le dije:
Bien, menos de siete carreras, ahora se puede ver que tenemos, de nuevo, 40, uno, dos, tres, cuatro, cinco, seis, saludos Entonces esa es la diferencia entre el bucle cuatro y el bucle salvaje. Se puede ver ahora mismo
con los cuatro bucles, tenemos nuestra lista o
nuestro camino y luego el bucle pasará por cada ítem en particular en esa matriz y
hará algo. Pero para el bucle Wile, tenemos que antes que nada
, especificar,
Bien, ¿cuál es el punto de
partida Y entonces ahora vamos a proporcionar
la condición, Bien, siempre y cuando esto
sea igual a esto
o esto sea menor que
esto, o esto es esto, esto
o esto sea menor que
esto, o esto es esto,
hacer algo y luego agregar uno o eliminar uno o simplemente
hacer algo para
asegurarse de que el bucle
ahora realmente comenzará a ejecutarse. Esa es la diferencia
entre el bucle
cuatro y el bucle while. Por supuesto, vamos
a estar trabajando mucho más con cuatro y wile
loops en este curso Pero gracias por
ver. Te
veo en la siguiente clase.
23. La declaración BREAK: Hablemos ahora de la declaración
break
porque es una declaración muy, muy poderosa,
y vamos a estar trabajando con ella en este curso. Pero antes de hacer eso, solo
quiero
mostrarles una manera diferente de
imprimir realmente los nombres en este ejemplo en
particular. Ahora mismo, estamos diciendo
buenos días y luego plus y
luego X. X, por supuesto, siendo la variable que representa
cada nombre en nuestra lista. Otra forma de escribir esto sería hacer
algo así. En primer lugar, voy
a quitar el plus X. Bien. Pero ahora voy a venir aquí mismo desde
el principio. Voy a escribir F, bien. Y ahora, aquí mismo, voy a agregar
mis llaves rizadas,
no las llaves habituales,
sino las rizadas Y ahora aquí,
simplemente voy a escribir X. ¿Bien? Yo puedo ejecutar el programa, y se puede ver ahora mismo que
tenemos exactamente los mismos resultados. Esto aquí mismo es
una
forma diferente y también más eficiente de
imprimir realmente los valores de
las variables en una lista o una matriz en
un aspecto de cuatro o mientras. ¿Correcto? Y vamos a estar caminando así
avanzando. Ahora bien, la declaración break, ¿qué es exactamente la declaración
break? Se usa cuando queremos
terminar un bucle temprano. Por ejemplo, en este flop
que estamos viendo ahora mismo, lo que hace es que
simplemente va a pasar por todos los nombres nuestra lista y luego
imprimir buenos días y después el
nombre de la persona, ¿verdad? Pero y si por una
razón u otra, quisiéramos
terminar el loop
tan pronto como James haya sido alcanzado, no
queremos
imprimir buenos días Violeta porque no nos
gusta la violeta, ¿verdad? Aquí es donde podríamos usar la sentencia break para
terminar el bucle temprano. Para demostrarlo,
voy a escribir un
programa completamente diferente, ¿de acuerdo? Entonces, ¿vamos a hacer esto bien? Voy a escribir
digamos números. Voy a crear una nueva lista aquí
mismo los números son iguales, y voy a poner entre paréntesis aquí. Y vamos con una
serie de números. Voy a ir con uno, tres. Vamos con siete, ocho,
diez, y vamos con 11, y agreguemos uno
más, par el número 14. ¿Bien? Entonces tenemos una lista
de números aquí, y lo que queremos hacer
ahora mismo es que queremos crear un bucle que
recorra todos los números. Sin embargo, una vez que se ha alcanzado el primer
número par, queremos terminar el bucle, es
decir, que una vez que el
número que es ocho, vamos a terminar el bucle, por lo que debería correr cuatro veces. El primer bucle para 1
segundo p para tres, tercero, busca siete, cuarto bucle para ocho. Entonces
piensa en esto, ¿verdad? Vamos a crear primero
el bucle de otoño, y luego vamos a
introducir la declaración I. Entonces el que me vendo
comprobará, Bien, ¿ este número
es realmente
par o es extraño? Si es par, entonces rompa el bucle porque encontramos
el primer número par else. Si no es un número par, si es un número impar, continúe con el bucle. Entonces, ¿cómo vamos a hacer esto? Gatap en entrar al
ciclo de otoño cuatro digamos Num. Bien, Num
representará los números. Y por cierto, no estoy seguro si ya lo he mencionado
antes, pero creo que ya es hora de hacerlo. Verás, sólo he escrito
el número. Puedes ver
ahora mismo en mi pantalla, Python ya está sugiriendo en números porque Python en
realidad es bastante inteligente, ¿verdad? Entonces en este tipo de
situaciones en estos momentos, si estás contento
con la sugerencia que te ha dado el programa, simplemente
puedes presionar la tecla
tab en tu teclado, y obtendrás
exactamente el mismo resultado, ¿verdad? Así que sí perdono
que no pueda hablar. He grabado el número de tabulación. O la tecla tap en mi teclado, y ahora tengo cuatro
num en números. Voy a sumar mi colon. ¿Bien? Ahora, voy a agregar la declaración If, ¿y usted
miraría eso? Te lo prometo,
en realidad no he escrito
este programa antes, pero creo que Python
es muy inteligente Ya tengo una idea de
lo que podría estar buscando. Sí, quiero si num, y luego porcentaje
dos es igual a cero. Entonces, ¿qué es exactamente esto?
¿Qué está pasando aquí? Lo que esto significa es que vamos a comprobar si el número que
se ha sacado, si es divisible por dos y el resto es igual a cero, entonces sabemos con certeza que
es un número par Si divide siete por dos, obtendrá 3.5, 3.5. Siempre va a haber ese
resto que quedan han sido la mitad. Pero cuando divides
ocho por dos, la respuesta es recta hacia arriba cuatro. No es 4.1, no es 4.2. No es 4.5, son cuatro. Entonces así es como podemos verificar si el número es realmente par. Entonces, si el número es, de hecho, par, ¿qué hacemos? Digamos imprimir. Bien. Y ahora voy
a añadir la cadena F. Bien, y ahora la cadena
real en sí encontró el primer número par. Bien, agreguemos mi coma. Y ahora quiero mostrar
el número real, llaves, y ¿qué
va a ser Va a estar entumecido. Bien. Impresionante. Entonces hemos agregado lo que
debería hacer el programa si el número es, de hecho, un número par. Prince dice: Bien,
encontramos el primer número, y ahora rompemos el bucle. Ya no necesitamos el
bucle para correr. Romper se acabó. Encontramos
el primer número malvado. Nos vamos de aquí.
El Asegúrate de tus pestañas. Recuerda que la tabulación es
sumamente importante, ¿de acuerdo? E y L s deben estar
en la misma pestaña,
derecha, la misma
sangría, Así que s simplemente imprimir, digamos, imprimir. Yo agrego mis corchetes y
luego mis abrigos siguen buscando ese número par. Y ahí está. Bien. Sigamos ahora mismo. Ejecuta el programa,
y ahí está. Sigo buscando
ese número par. Sigo buscando
ese número par. Sigo buscando
ese número par. Oh, mira, encontramos el
primer número par, y el número es ocho. Este es el uso de
la declaración break. Ahora, vamos a usarlo en una L. salvaje Ahora para hacer esto, voy a
llegar hasta aquí abajo. Y vamos a crear un programa
muy sencillo que le pida
al usuario que escriba algo como o
escriba una letra en particular, y siempre y cuando la
letra no sea igual a Q, entonces simplemente siga pidiéndole al
usuario una nueva letra, ¿de acuerdo? Entonces esa es básicamente la condición que
hay que satisfacer. Entonces mientras el usuario
está escribiendo ABCDEF, siempre y
cuando no sea Q, siga pidiéndole
al usuario que ingrese una Entonces voy a decir si bien cierto, lo que hace esto ahora mismo, esta es una función o
loop muy
simple en Python que
automáticamente ha creado una condición
que siempre es verdadera a menos que suceda
algo más. Recuerde que con
los bucles salvajes, necesita
haber una
condición particular que debe satisfacerse continuamente
para que el bucle funcione realmente, y luego debe
terminarse
una vez que se haya cumplido una
condición muy específica. Entonces vamos a
asumir ahora mismo que la condición siempre
es cierta, y ahora voy a
escribir entrada de usuario. Esta va a ser
la variable que
representará la letra que el
usuario realmente va a escribir. Entonces voy a decir que la entrada
del usuario es igual, y ahora entrada, recuerda
la entrada de la función, que ahora le pedirá al
usuario que escriba algo. Entonces voy a decir, ingrese una letra y
luego entre paréntesis, voy a decir, Oh, escriba Q. Bien. Escriba Q para
salir del programa. ¿Bien? Entonces estamos dando una opción a los
usuarios de aquí, ¿de acuerdo? Puedes o simplemente escribir una letra o si quieres
salir del programa, solo tienes que escribir Q, ¿de acuerdo? Entonces voy a presionar Enter. Así que ahora vamos a escribir
la condición que debemos necesitar para comprobar si la
entrada era o no realmente Q. Así que voy a
entrar ahora mismo, añadir la instrucción If. Entonces vamos a comprobar si
la entrada del usuario es igual a P. ¿Qué debemos hacer? Bueno, voy a decir
imprenta. Entre paréntesis. Y voy a decir que has
optado por salir del programa. Elija salir del programa. Presiona Enter, y ahí está. Y ahora ya que han
optado por oh, permítame agregar aquí las citas de
cierre. Ya que han
optado por salir del programa, ahora
vamos
a romper el bucle. De lo contrario, voy
a entrar aquí
ahora mismo y luego decir imprimir. Y ahora los códigos F, mecanografiados. Y ahora, recuerden, entre llaves, voy a decir usuario
en las entradas de partitura. Y ahí está. ¿Bien? Ve a seguir adelante
ahora mismo. Ejecute el programa. Bien, entonces ahora está diciendo Ingresa una carta,
voy a decir Y. Presione Enter. ¿Bien? Ahora
dice, Bien, tecleaste Y. Ingresa otra letra,
voy a decir A. Una vez más, se está ejecutando
hasta que ahora tecleé Q, y ahora ha
terminado el programa Y esto de aquí mismo estamos combinando la declaración de nuestro Wil, el Wile Loop más bien con
la declaración break Así que déjame repasar por
esto otra vez. Sé que podrías tener una
pregunta, por qué no escribimos
la s Porque tenemos la
declaración I. Entonces, ¿dónde está el s? Bueno, en realidad podríamos agregar el s. Va
a estar justo aquí, y yo solo diré se. Y luego el byte tabulador aquí
imprime, usted escribió esto. Así puedo seguir adelante ahora mismo. Ejecute exactamente el mismo
programa nuevamente. ¿Bien? Viniendo aquí
ahora mismo, tecleando G. Funciona bien, mecanografiando, funciona bien, tecleando Q, enter, y ahora funciona exactamente de
la misma manera. Entonces, una cosa que debes
entender aquí es que la razón por la que la declaración
else es realmente opcional aquí es porque
estamos trabajando con el wild true loop,
la condición. Entonces va a asumir
automáticamente que la condición siempre
será cierta. Y ahora estamos usando la declaración
break aquí para controlar
intencionalmente cuándo terminaría realmente
el bucle. Entonces realmente no hay
necesidad de la declaración de Ls aquí. El bucle siempre se ejecutará porque hemos
dicho Wild true y solo nos
detendremos a través la sentencia break una vez que el usuario haya escrito
la letra Q. Entonces realmente, la declaración Ls
aquí no es necesaria Aún puedes teclearlo. El programa seguirá
funcionando perfectamente bien. Pero siempre que estés
caminando con la
verdadera salvaje y luego las declaraciones
break, ya no
necesitas agregar la condición
Ls. Así que hemos hecho bastante
en este video en particular. Ojalá hayas podido seguir y ojalá ahora entiendas cómo se usa la
declaración break. Muchas gracias por
ver el video. Te veré en
la siguiente clase.
24. Intenta excepto declaraciones: Bueno, vuelve. En
la lección anterior, creamos con éxito
este programa en particular que aceptará entrada, números
positivos del usuario. Estudiará números en una lista, y continuará haciéndolo
hasta que el usuario escriba
la palabra hecho. Y al final del
mismo, se
imprimirá si había un número par, imprimirá cuál fue el
primer número par y
también eventualmente imprimirá todos los números de la lista. Sin embargo, una cosa que descubrimos fue que cuando ejecutamos el programa
y agregamos, digamos, por ejemplo, en lugar de un entero real
como ocho o nueve, agregamos, digamos, 8.6, ¿verdad? Cuando presionamos Enter,
terminamos teniendo esta flecha particular valor de
mensaje flecha. Ahora bien, si
volvemos a ejecutar el programa, y en vez de 8.5, dije, ya sabes, IOF, escribí letras en
su lugar, presiono Enter Se puede ver una
vez más que también
tenemos exactamente el mismo error. Y eso es porque nuestro
programa ha sido creado de
tal manera que se espera que sólo reciba números
positivos. Si ejecutamos el programa una
vez más y escribí,
digamos, menos seis, que es un número negativo
y presioné Enter, se
puede ver que en realidad funciona de
alguna manera Sí acepta el
seis negativo porque es
un número real. Simplemente pasa a ser negativo. Pero eso sigue derrotando
el propósito porque
solo queremos que el usuario
escriba números positivos Por lo que ni siquiera debió
aceptar este seis negativo. Así que sí tenemos bastantes problemas con nuestro programa en particular, y necesitamos introducir ahora
algo conocido como el bloque try y luego
el accept block. Entonces el tri block en Python
es básicamente parte de lo llamamos un mecanismo de
manejo de excepciones, que básicamente nos
permitiría
capturar y manejar errores que pudieran ocurrir durante la
ejecución de nuestro código. Entonces, si ocurre un error
dentro del tri Block, el programa no se bloqueará. En su lugar, se
capturará el error y luego se ejecutará
el código dentro del bloque
excepto asociado. Ten en cuenta que no
se trata solo los usuarios cometan un error cada vez que
teclean sus entradas. También es posible que un
hacker intente deliberadamente insertar valores que
el programa no aceptará en un esfuerzo por bloquear
realmente el programa. Es por ello que debemos asegurarnos siempre de
que nuestros programas, siempre que acepten
entradas del usuario, creamos y diseñemos los
creamos y diseñemos de tal manera
que sean capaces de
manejar nuestras
entradas equivocadas del usuario. Entonces, ¿cómo vamos a
atrapar ahora algún error en particular? Bueno, voy a
venir aquí. Estamos rompiendo, ¿de acuerdo? Entonces, la razón por que
estamos comenzando aquí es
porque aquí es donde
vamos a verificar si el usuario ha
agregado
o no la
palabra hecha o un número real. Entonces, después del descanso, ¿verdad? Después de descanso porque break
comprobará, Bien, ¿ya está hecho? Si no se hace, entonces ahora
se va a ejecutar. Aquí es donde ahora
vamos a escribir
las palabras o mejor dicho
la palabra try porque aquí
es donde
queremos que el programa coja una flecha si la hay. Entonces ahora va a
ser try y luego colon. Y ahora esto de aquí, simplemente
podemos tabular eso Bien, déjame
presentarlo justo aquí. Entonces estamos diciendo
aquí mismo que si el
usuario escribe en hecho, simplemente rompa el programa. Lo siento, rompa el lazo. Sin embargo, si es
un número real, verifiquemos para ver si
ese número es positivo. Entonces en este momento tenemos la variable de
crédito NUM hemos agregado la entrada del
usuario a NUM. Entonces ahora, comprobemos para
ver si es positivo. La forma más fácil de verificar
sería simplemente decir si el número es menor que cero. Esta es la
forma más fácil de verificar. Si el número es, de
hecho, menor que cero, vamos a decir print, por favor ingrese un número positivo. Ahora s porque después de que yo venga. Ahora se si de
hecho fue un número positivo, ahora simplemente
vamos a anexar Vamos a añadir la variable
num dos números, y eso es todo aquí mismo ¿Bien? Y finalmente,
porque tenemos try, vamos a cerrarlo usando la declaración accept. Entonces básicamente, lo que estamos haciendo aquí mismo
estamos diciendo, Oye, si el valor proporcionado por
el usuario era, de hecho, menor que cero, entonces imprime, por favor ingresa un número positivo. Pero entonces, ¿y si el usuario
no escribió un número? Y si escribieran letras o cadenas, básicamente, ¿verdad Entonces aquí es donde va a entrar ahora el
excepto. Entonces vamos a decir
excepto error de valor, ¿de acuerdo? Entonces, si hay un error
real dentro
del valor en sí
porque no es un número, ahora va a decir, imprima, por favor ingrese un número válido. Y eso es todo ahí mismo. Entonces intentemos ver
si esto va a funcionar. Entonces voy a seguir adelante
ahora mismo, ejecutar el programa. ¿Bien? Entonces lo que voy a
hacer ahora mismo es que voy a negativo seis, presione Enter. Se puede ver aquí mismo, dice, Por favor ingrese un número positivo. Pero y si escribí una cadena
como esta, por ejemplo, ahora dice, por favor
ingrese un número válido Ve cómo funciona esto, ¿verdad? Así que déjame guiarte a través de
todo de nuevo. Básicamente,
aquí mismo donde estamos aceptando la entrada
del usuario. Queremos verificar
para asegurarnos de que en realidad
es un número positivo. La mejor manera es que si ese
número es menor que cero, entonces sabemos que es negativo,
podemos imprimir. Por favor, introduzca un número positivo. Si por otro lado,
es mayor que cero, sabemos que es un número positivo. Podemos seguir adelante
ahora mismo y agregar el entumecido a la lista de números Y ahora
tendremos que decir, Bien, pero ¿y si
hubiera un error real dentro del tipo de entrada
que insertó el usuario? A lo mejor no fue un número
positivo. A, tal vez ni siquiera fue
un número negativo. A lo mejor fue como letras o palabras o
algo completamente diferente. Entonces podemos decir, Por favor
ingrese un número válido. Ahí es donde
entra en juego el excepto. Entonces eso es todo para el try
and except declaraciones. Gracias por
ver el video. Te veo en
la siguiente clase.
25. Continuar declaración: Antes de redondear la sección
sobre bucles y control de flujo, quiero echar un
vistazo a una declaración más, y esa va a ser
la declaración continue. Hasta ahora, hemos estado trabajando
con la declaración break, y esto
por supuesto se usa para terminar el bucle una vez que se ha cumplido una
condición en particular. Pero y si por una
razón u otra, simplemente
quisiéramos saltarnos una iteración en particular
o parte de un bucle No queremos terminar
el bucle exactamente. Sólo queremos saltarnos
un paso en particular. Aquí es donde
entra en juego continuar. Déjenme dar un ejemplo.
Déjame simplemente quitar este código. Digamos para número
en ningún rango 16. Ahora, probablemente te estés preguntando
qué es exactamente el rango. Rango aquí es simplemente una
función incorporada dentro de Python, que generará números
entre un cierto rango En este caso, ahora mismo,
estamos diciendo números 1-6. No obstante, por favor, ten en cuenta que cuando estés trabajando
con la función range, el primer número aquí,
que es uno, será inclusivo mientras que el
último número aquí, que es seis, no será
inclusivo para ser exclusivo. Si yo fuera a decir simplemente, bien, simplemente imprima y luego entre paréntesis, solo
imprima el número. Ya verán ahora mismo que
vamos a conseguir uno,
dos, tres, cuatro, cinco. Por favor, tenga esto en cuenta. Ahora, la función por defecto imprimirá uno,
dos, tres, cuatro, cinco. Pero, ¿y si quisiéramos
saltarnos tres en este caso? Queremos si vamos
a imprimir uno, dos, cuatro, y luego cinco, ¿cómo
vamos a hacer esto? Aquí es donde va a entrar en juego
el
enunciado continuo . Pero antes que nada,
necesito crear la declaración If para verificar si el número es igual
a tres, ¿verdad? Entonces ahora estoy diciendo, si es
igual a tres, solo continúe. No necesito agregar
la declaración aquí porque cuando se está trabajando con la declaración continua,
se entiende. Python simplemente dirá, una vez que llegue a tres,
voy a saltarlo. Voy a saltarme tres y luego simplemente continuar con
el resto del bucle. Ahora bien, si tuviera que
ejecutar el programa, ahora pueden ver que es uno, dos, cuatro, y luego cinco. Así es básicamente como funcionaría la declaración de
continuar. Déjame darte otro ejemplo
muy rápido. Y si
ampliara el rango aquí de
uno a digamos 11. Pero ahora queríamos verificar
los números que son pares y luego simplemente
mantener esos números pares, solo
queremos
imprimir los números impares. Otra vez, ¿cómo
vamos a hacer esto? Primero que nada, verifiquemos para ver si es divisible por
dos así que voy a decir porcentaje y luego dos aquí
mismo es igual
a lo que equivale a cero en mi columna ahora
simplemente voy a decir simplemente
continuar y luego imprimir número Ahora si programa sterni, ahora se puede ver que es simplemente uno, tres, cinco, siete y nueve Así es como funciona realmente la
declaración continue. Permítanme dedicarme solo
1 minuto a hablar un poco más sobre
la función de rango. Hay una cosa más.
De lo que debes estar al tanto. Lo que pasa con la
función range es que en realidad
puede aceptar
tres valores. Como ejemplo,
permítanme agregar mi etiqueta hash. Por ejemplo, con rango, puedes tener algo como uno, diez, y luego dos. La función range puede aceptar tres
parámetros diferentes, ¿verdad? Entonces, si te estás preguntando,
¿qué
van a ser exactamente ? Bueno, el primer número aquí representa
el valor inicial, que es uno el segundo aquí representará
el valor stop, que va a ser diez, mientras que el tercer valor en este
momento representará dos, que serán los pasos
que deben omitirse Por defecto, déjame
mostrarte cómo funciona esto en este momento. Si tuviera que venir
aquí ahora mismo y luego decir uno, diez, o dos. Sólo como ejemplo, permítanme simplemente quitar el
sepment continue aquí Bien. Si sigo adelante ahora mismo e
imprimo estos números, verá que ahora es uno,
tres, cinco, siete y nueve y? Porque nos estamos
saltando cada dos. El paso va a ser dos,
así que va a ir a uno, va a saltar
a tres,
va a saltar a cinco y así sucesivamente. Si tuviera que cambiar este ahora
mismo a tres, puedes adivinar cuáles van a ser los
valores? Ahora van a ser 14, siete. Entonces si ejecuto el programa, ahí van 147. Puede o no trabajar con la función de rango
en el futuro, pero solo sentí que es importante que al
menos entienda que la función de rango puede aceptar hasta tres parámetros
diferentes. El primer valor
aquí es el inicio, segundo es el número de parada, y luego el último
valor aquí el número de paso y tenga en cuenta que el valor stop siempre
es exclusivo. No va a ser incluido en los resultados reales de esa función de rango
en particular. Lo último que hay que mencionar, lo
último que hay que mencionar, también
puede encontrarse una declaración en particular
llamada la declaración de pase. Simplemente va así.
En lugar de continuar, por ejemplo, verás pasar. El pase realmente no hace nada. Honestamente, realmente se usa
para pasar comentarios. A lo mejor
el desarrollador del programa no quiere ejecutar algo todavía pero
quiere vivir como un nodo. Para eso se utiliza principalmente la
declaración de pase. No vamos a estar
trabajando con ello para nada. Entonces por ejemplo, aquí dentro, podría
decir algo
así como, Bien, pase y luego puedo agregar mi
hash tag y puedo decir que
agregaré la función más adelante. Sólo como ejemplo.
Déjame seguir adelante y ejecutar el programa,
y ya puedes ver, el programa sigue funcionando de todos modos, no va a hacerlo
realmente no hace nada como tal. Eso es más o menos. Gracias por
ver el video. Te veo en
la siguiente clase.
26. Desafío de programación: Ok, dookie, ahora es el
momento de que intentemos armar todo lo
que hemos aprendido
hasta ahora para escribir un programa Y el programa que queremos es el que le
pida al usuario siga ingresando un número positivo o bien si
quiere salir del programa, simplemente
pueden escribir
las palabras o la palabra hecha para
salir del programa. Entonces básicamente, estamos diciendo,
Oye, usuario, sigue sumando
un número positivo. Sigue agregando el número. Sigue sumando número. Siempre que estés listo
para salir del programa, solo tienes que escribir listo, ¿verdad? Ahora, como el usuario está escribiendo los números
dos, tres, cuatro, nueve, 11, sea lo que sea, queremos agregar esos
números a una lista. Queremos poder
realizar un seguimiento de todos los números que el usuario
sigue proporcionándonos. Entonces vamos a agregar
esos números a una lista. Pero también queremos que el
programa verifique los números eVo que el
usuario ha agregado y
realice un seguimiento del primer número
EVO que se proporcionó para que podamos
imprimir y decirle al usuario que, Oye, este fue el primer número
par que agregaste, y luego podemos indicar
cuál era ese número. De lo contrario, si el usuario
agregó solo números impares, entonces
simplemente podemos decir: Bien, no se
encontraron números pares en tu lista. Ahora, una vez que el usuario ha agregado varios números y luego finalmente decide
salir del programa, queremos que el programa imprima todos los números que
fueron agregados por el usuario. Y si el usuario ni siquiera
agregó un solo número, solo diga que no hay
guerra de números en no es difícil. Bien. Entonces, abordemos
esto paso a paso. En primer lugar, vamos
a querer una lista, ¿no? Llamemos a esos números
de lista, ¿de acuerdo? Entonces vamos a estar sumando todos los números
ingresados por el usuario. Vamos a agregarlos a
esta lista llamada números. Entonces, obviamente,
vamos a hacer uso de
la función de entrada para, ya sabes, solicitar al usuario que agregue
números, ¿verdad? Bien. Y vamos
a tener que crear un wild loop en este
escenario porque
queremos que el usuario siga
agregando un número o proporcionando un número hasta que elija
salir del programa. Entonces podemos decir, ya sabes, si bien es cierto, y luego el usuario
sigue sumando un número. Y luego queremos comprobar
si el número que proporcionó el usuario era
en realidad un número par. ¿Bien? Así que vamos
a tener que tener algún tipo
de declaración de El que
comprobará si el número, si es derrotable
por dos, ya sabes, si eso equivale a cero, ya sabes,
entonces imprime, número par, ya
sabes, cosas como Ya sabes, de lo contrario,
solo di que no, incluso se
encontraron números. Pero, ¿qué más? Recuerda que
también queremos seguir sumando
los números
que el usuario nos ha proporcionado. Queremos agregarlos a
la lista llamada números. Entonces vamos a
tener que anexar entrada
del usuario a la lista de
números, ¿verdad Y vamos a hacer uso de una nueva función aquí
llamada Append Bien, no te preocupes. Te voy a
mostrar cómo funciona eso. ¿Qué más necesitamos
hacer un seguimiento? Eso es prácticamente todo
en este punto, ¿verdad? Entonces Primero que nada, creamos nuestra lista
llamada números, y ahí vamos
a tener que solicitarle
al usuario que agregue los números, verifique para ver si los
números son pares. Una vez que se haya encontrado el primer
número par
, que el programa
realice un seguimiento de eso y luego al final imprima cuál era
ese número par. Y luego, por supuesto, también
al final del programa, la mayoría de los usuarios ha
decidido salir de él, simplemente imprimir todos los
números que el usuario agregó. Así que vamos a hacer esto, ¿verdad? Vamos a
alejar esto y comencemos. Entonces lo
primero es lo primero, vamos a crear nuestra lista vacía que
contendrá todos los números
proporcionados por el usuario. Así que los números son iguales,
y luego vacíos, ¿de acuerdo? Entonces el primer paso que
vamos a hacer. Ahora, solicitemos al
usuario que agregue el número. Entonces voy a decir
while y ahora true colon ahora queremos pedir
al usuario que
proporcione algunos números. Sin embargo, tendremos que asignar entrada de
usuarios a una variable. Entonces digamos usuario en la entrada de
subrayado. Bien, esto representa
lo que el usuario agregue. entrada del usuario aquí es igual
a los corchetes de entrada, y ahora vamos a solicitar al usuario que ingrese
un número positivo. ¿Bien? O entre paréntesis, también
podrían simplemente escribir
tipo hecho para terminar. ¿Bien? Hasta ahora tan bien,
hemos asignado números. Tenemos nuestra
lista vacía ahí mismo. Esto recopilará los números
proporcionados por el usuario, y ahora hemos creado un bucle para solicitar
al usuario que siga agregando un número positivo o tipo hecho si decide terminar. Entonces, lo que vamos a hacer
ahora mismo es que verifiquemos para ver si el usuario realmente ha escrito las letras
hechas o tecleadas hechas Bien, porque no
queremos que el producto siga funcionando si el usuario
decide escribir done. Entonces voy a decir si usuario En la entrada de partitura
es igual a hecho. Si estos son realmente tipos hechos,
¿qué vamos a hacer? Lo adivinaste,
vamos a romper el lazo. Bien, déjame agregar
algo de espacio aquí. ¿Bien? Todo bien. Así que hemos comprobado para ver
si dieser ha escrito hecho si
rompieron No obstante, si escribieron un número positivo
real, ¿qué queremos que haga
el programa? Queremos que el programa agregue ese número a la lista de números. ¿Bien? Entonces, ¿cómo
vamos a hacer esto? Necesitamos algo para representar los números que nos
proporcionará el usuario. En este caso, ahora mismo,
no lo enrosques. La
variable de entrada del usuario aquí es simplemente representar
la entrada aquí, ingresar un número positivo
o escribir done to finish. Eso es lo que
representa aquí. Los
propios números reales tendrán que crear una nueva
variable para eso. Entonces para la variable de aquí, voy a decir num. Bien, num va
a ser igual a dos, yo NT, recuerda la función
entera que convertirá lo que sea que escriba
el usuario. Entonces no va a ser entero
y ahora subrayado de entrada. ¿Bien? Entonces básicamente, lo que sea que escriba
el usuario en esta línea aquí
mismo donde decimos
ingrese un número positivo, si el usuario escribe en
5.2, por ejemplo, ¿bien? Convierte 5.2 a un entero, que ahora será cinco
y luego asignará cinco a la variable
llamada número NUM. Ahora el siguiente paso
será agregar este número
que el usuario ha agregado a la lista de números.
¿Y cómo lo hacemos? Voy a escribir números y ahora echa un vistazo
a esto punto append Y ahora entre paréntesis NUM. Entonces aquí mismo, este append
va a ser la función
que ahora comenzará a agregar los números agregados por el usuario a
la lista de números Vamos a repasarlo una vez más. Entonces, antes que nada, tenemos nuestra lista
vacía llamada números. Vamos a crear el bucle llamado Wil que solicitará al usuario que siga
agregando un número positivo. Sin embargo, si escribieron hecho, si la entrada del usuario
es igual a hecho, rompa el bucle, sin
necesidad de continuar Pero si el usuario realmente
agregó números reales, asigne esos números a una
variable llamada Num NUM, y ahora comience a anexar esos números
a la lista de números Hasta ahora tan bien, ¿
qué más queremos hacer? Queremos verificar si está
agregando algún número par. Entonces, ¿qué vamos a hacer? Vamos a
crear un bucle de cuatro. ¿Bien? Ese bucle
va a pasar por todos los números de
la lista de números y luego encontrar el
primer número par. Entonces echa un vistazo a esto. Voy
a decir cuatro num N en qué? En números. Así es. Ahora, agreguemos dos puntos. Vamos a crear la declaración I L. Entonces, si num dividido por
dos es igual a cero, ¿
qué queremos que diga el
programa? Queremos programar para decir imprimir. Y ahora nuestros corchetes. Vamos a agregar nuestra cadena F,
y luego podemos decir, encontramos el primero el
primer número par. Y luego, claro,
llaves rizadas, y luego NUM. ¿Bien? De lo contrario, si el número que fue agregado por el usuario ni
siquiera es simplemente romper. Vamos a romperlo, ¿de acuerdo? Y ahora podemos agregar
nuestra declaración para hacer algo podemos
decir s dos puntos y ahora vamos a decir
imprimir cuando dices que no se
ingresaron números pares por el usuario. Y ahí está. No obstante, nuevamente, la identación es
muy, muy importante Ten en cuenta que esto
es debajo de los cuatro, ¿de acuerdo? Entonces no es Es más bien. Es la
declaración de las cuatro s aquí. Así
que solo asegúrate de no cometer el error theidntons
van a ser muy, muy,
muy, muy,
muy importantes Entonces es básicamente cuatro
y luego num en números. Si num dividido por dos
es igual a cero print, encontramos el primer número y luego imprimimos
cuál es el número. De lo contrario, simplemente rompa el bucle una vez que se haya encontrado ese número, una vez que se haya encontrado el primer
número positivo. Lo sentimos, se ha encontrado el primer
número par. Y entonces, si el usuario no
agregó ningún número par,
simplemente
imprimen no
ingresaron números pares por el usuario. Bien. Por último, pero no menos importante, ahora
tendrá que
imprimir todos
los números que el usuario haya agregado
al final del programa. Entonces voy a
salir aquí ahora mismo, agregar la nueva declaración If
y simplemente decir si número. Entonces, si el usuario realmente
agregó algunos números, entonces si los números, adivina
qué, simplemente imprima. Y ahora vamos a
decir F y ahora codifica los números que ingresaste R y luego llaves Ahora, los números. De lo contrario, así que eso va
a ser s. Simplemente imprime. Es decir, si el usuario
no agregó ningún número, podemos decir que el usuario no
ingresó ningún número. Oh. Intentémoslo. Voy a seguir adelante ahora mismo. Ejecute el programa. Y, oh, entonces tenemos un pequeño problema aquí mismo. Dice la línea 23. Bien, imprima F.
¿Qué hice mal aquí? Oh, no debería
haber ningún espacio. Lo siento. No debería haber
ningún espacio ahí mismo. Ya ves como un solo
espacio puede arruinarlo todo. Es un poco
exasperante, pero, sí. Entonces, siempre que estés
usando las cadenas F, asegúrate de que no haya espacio
entre la F y tu código. Entonces intentemos eso otra vez. Corre. Bien, entonces
voy a agregar uno. Bien, agreguemos tres. Agreguemos cuatro. Bien,
agreguemos cinco. Agreguemos ocho. Agreguemos seis. Y ahora voy
a escribir hecho, Enter, y ahí tienes. El primer número, el primer número
par, era cuatro, y ahora hemos escrito los
otros números que son uno, tres, cuatro, cinco,
ocho y seis Entonces puedes ver ahora mismo,
el programa realmente funciona. Entonces déjame repasar el
programa una vez más. En primer lugar, creamos
una lista llamada números. Esto contendrá
cada número positivo agregado por el usuario. A continuación, creamos
el bucle while que continuamente solicitará
al usuario que siga agregando
un número positivo, o si elige no hacerlo, simplemente
pueden escribir la palabra done para terminar el programa. Así que ahora necesitábamos verificar si el usuario realmente escribió hecho Y por cierto,
déjame incluso probar eso. Bien, vamos a correr, y vamos a escribir hecho al instante y ver. Bueno, ahí tienes. Entonces el
programa funciona muy, muy bien. Entonces en realidad se comprueba para ver, oye, ¿este usuario tecleó
hecho? Oh, lo hizo. Bien, así que si escribimos hecho, entonces simplemente rompemos el bucle Ya no necesitamos
ejecutar el loop porque el usuario
ha escrito en done Entonces en ese caso, ahora mismo, en este escenario en el
que el usuario ha escrito hecho, básicamente, todo esto todo esto aquí
mismo es completamente
irrelevante, ¿de acuerdo? aquí
mismo es completamente
irrelevante, El programa Python pasará directamente de esto desde
la declaración break, hasta aquí abajo
a simplemente decir:
Oye, antes que nada, todo
el camino aquí mismo. En primer lugar decir:
Oye, no
se ingresaron números pares por el usuario. Y luego finalmente, no
se agregaron números por parte del usuario. Entonces todos los nomicals integer, va a saltarse todo eso Pero, ¿y si el usuario
realmente escribió un número? ¿Qué queremos que haga
el programa? Bueno, queremos agregar ese
número a nuestra lista de números. Entonces necesitamos asignar la entrada del
usuario a una variable. En este caso, en este momento,
creamos una variable llamada Num que representará la
entrada proporcionada por el usuario. Y también agregamos el INT. De hecho, probemos esto y veamos. Voy a decir 4.5
Entra y oh oh, oh, oh. Bien. Aquí hay un pequeño problema, ¿tienes un
mensaje de error?
No te preocupes. Te voy a mostrar
cómo podemos manejar los errores en el siguiente video. Bien, B, déjame dirigir esta
una vez más, ¿de acuerdo? Y escribe,
digamos, cinco, ¿de acuerdo? Escriba en cinco, escriba
en ocho, listo. Bien, así que sigue funcionando bien. Así
que nos aseguramos de haber asignado los números agregados por el usuario
a la variable llamada NOM, y luego agregamos NOM
a la lista de números usando esta función particular
escribiendo números punto append y num, ¿de acuerdo? Ahora, debido a que el usuario
en realidad agregó algunos números, queríamos que el
programa verificara si alguno de esos números
era realmente par. Y al hacerlo,
tuvimos que crear un bucle que recorriera todos los
números de la lista de números. Y entonces si el número era divisible por dos
sin resto, simplemente di, Bien,
encontramos el
primer número par,
impresora ese número De lo contrario, si el usuario
no sumó ningún número par, simplemente diga que el usuario no
ingresó ningún número par. Y al final del día, simplemente imprime los números
que fueron agregados por el usuario. Y si el usuario
no agregó ningún número, simplemente diga que ningún número
fue terminado por el usuario. Eso es exactamente lo que hicimos aquí. Entonces, siéntete libre de pasar por este programa tantas
veces como necesites. Ojalá fuera
relativamente sencillo. Y claro, como siempre, si tienes alguna
duda sobre algo hayamos hecho aquí y que no
estés, ya sabes, estás exactamente seguro,
siempre siéntete libre de
comunicarte estaré más que feliz responder cualquier
pregunta que tengas. Por lo que Jomini Vernick Video web ahora
comenzará a echar un
vistazo a cómo podemos manejar
los errores en
27. Introducción a la sección de funciones: Ven a la flamante
sección donde vamos a echar un
vistazo a las funciones, y te garantizo
que ningún curso programación estará completo sin hablar de
funciones, ¿de acuerdo? Las funciones son extremadamente
importantes, y lo creas o no, en realidad
hemos estado trabajando
con algunas funciones, e incluso ya hemos creado algunas
de nuestras propias funciones. En este curso. aún
no lo sabes.
Entonces en esta sección, vamos a enfocarnos en las funciones.
Te voy a mostrar cómo puedes crear tus
propias funciones personalizadas, y luego cómo
puedes usar algo conocido como los parámetros, ¿bien? ¿Con qué queremos que trabaje nuestra
función? Qué tipo de
tipos de datos, cosas así. También vamos a
echar un vistazo a argumentos de palabras clave, variables
locales y globales,
y mucho más. Y al igual que con las secciones
anteriores, va a
haber
un ejercicio de codificación al final de la sección. Entonces, por favor, inténtalo. Ojalá
puedas pasar. Si no, no te preocupes, te
voy a dar
la solución. Entonces,
sin perder más tiempo, comencemos a
hablar de funciones.
28. Definir e invocar funciones: Bien, así que bienvenidos a esta nueva sección de
Bn donde
vamos a echar un vistazo a las funciones, ¿verdad? Y hasta ahora tan bueno, en realidad
hemos estado trabajando
con un buen número de funciones
preconstruidas
dentro de Python. Entonces funciones como la
impresión, entrada, rango, etc., todas realizan un tipo particular de operación. Sin embargo, ¿y si
quisiéramos crear nuestras propias funciones personalizadas?
¿Cómo podemos hacer eso? Bueno, para hacerlo,
vamos
a tener que definir primero el nombre de la
función, y luego decidir si esa función va
a aceptar o
no lo que
llamamos parámetros. Y entonces también podemos decir, Bien, esta función sumará estos números o
va a hacer algo. Y luego finalmente,
podemos optar por
devolver un valor dentro de
esa función. Entonces va a ser
algo así. Tendrás DEF, que
va a ser la función para
definir el nombre de la función, y luego puedes elegir tener parámetros dentro de
esa función, ¿de acuerdo? Y entonces tendremos
el cuerpo de función. Entonces, ya sabes, agrega A más B, agrega esto, haz esto, divide esto, revisa para ver si este bucle
es verdadero, cosas así. Básicamente, sea lo
que sea que haga la función. Y luego finalmente, entonces podemos
optar por devolver un valor, que por cierto, esto
va a ser opcional. No siempre tenemos que
devolver un valor cada vez que estamos creando
nuestra propia función. Déjame darte un ejemplo muy,
muy básico. Entonces digamos porque queríamos
crear una función que imprima las palabras
hola mundo, ¿verdad? Podemos decir DF, y luego puedo llamar a
mi función Grit Entonces el nombre de mi
función va a ser GET y luego puedo agregar mis corchetes en los
dos puntos y luego terminar hub. Por cierto, fíjate
que no he agregado ningún parámetro dentro de
los corchetes de aquí. Los parámetros son opcionales, ¿de acuerdo? Sin embargo, voy a
entrar ahora mismo y luego definir qué va a hacer realmente la
función. Voy a decir imprimir. Ahora voy a proporcionar
las palabras hola mundo. Y ahora todo lo que tendría que hacer es simplemente llamar a la función. ¿Y cómo hago eso?
Voy a saludar. Y luego los paquetes,
y ahí está. Entonces ahora si para ejecutar el programa, ahí tienes, simplemente
dice hola mundo. Entonces, una vez más,
empezamos dando el nombre saludo a nuestra función. Y entonces ahora dijimos qué debía hacer
la función. La función debe imprimir hello world cada vez que
llamamos o usamos esa función. Y luego aquí mismo, simplemente
llamamos a la función simplemente
diciendo grit y
luego entre paréntesis, y ahí tienes Entonces esta de aquí es una de las clases más básicas de
funciones que podemos crear. Pero eso es todo. Jerman
Vanex Video Ware ahora
comenzará a echar un
vistazo a los parámetros y
argumentos de las funciones. Te veré entonces.
29. Parámetros y argumentos: Bueno, bienvenido de nuevo.
Ahora, hablemos de parámetros y argumentos. Ver, un parámetro es
básicamente una entrada que podemos agregar a una función para personalizar su comportamiento. En este caso, ahora mismo, en el ejemplo anterior, el
nombre de la función, que es grid, no
tenía ningún parámetro en absoluto. Básicamente está vacío. Por eso cuando dijimos, Bien, imprime y luego
simplemente hola mundo, y luego llamamos a la función, todo lo que simplemente hizo fue
simplemente decir hola mundo. Pero, ¿y si ahora queremos
agregar un
parámetro particular en su interior? En este caso, ahora mismo, voy a
entrar aquí ahora mismo y decir nombre. ¿Bien? Entonces el perímetro
aquí mismo se llama nombre, y ahora quiero que mi función diga hola y luego el nombre
que se proporcionará. Así que voy a
venir aquí ahora mismo. Vamos a usar la cadena F, y ahora voy a
agregar mis
llaves, corchetes más bien
y llamarlo nombre ¿Bien? Entonces ahora, mira esto. Cuando estoy llamando a mi
función ahora mismo, puedo agregar lo que
llamamos el argumento. Cuando le estás pasando un
valor a la función, se va a
convertir en un argumento. Tenga en cuenta la diferencia entre parámetros
y argumentos. Aquí arriba, cuando estemos
definiendo por primera vez la función, vamos a usar
el parámetro. El parámetro básicamente
está diciendo: Oye, te
estamos proporcionando esta entrada, y voy a usar
esta entrada para personalizar cómo se comportará la
grilla de funciones. Sin embargo, una vez que se
ha creado la función, hemos dicho lo que se supone que debe hacer la
función. En este caso, ahora mismo, hola y luego nombra el perímetro. Cuando llamamos a esa función, cuando queremos aportar un valor, se va a convertir en lo que
llamamos un argumento. Entonces en este caso,
ahora mismo, si quería saludar, digamos, Alice, por
ejemplo, ¿verdad? Alice ahora mismo es el argumento, y si yo fuera a ejecutar el
programa, ahí tienes. Dice: Hola Alice. ¿Y si quisiera
saludar, digamos, Bob? ¿Correcto? Bob, sigamos adelante, ejecutemos el programa, y
ahí está. Hola Bob. Se trata de perímetros
y argumentos. Sin embargo, también podemos tener múltiples parámetros
en nuestra función. Hasta ahora, sólo
hemos estado trabajando con un solo
parámetro, que es name. ¿Y si quisiéramos
crear una función que
sume dos números juntos? ¿Cómo vamos a hacer eso? Bueno, podemos comenzar
definiendo el nombre de la función. Entonces voy a llamar a
esto sumar números. Agregar números será el
nombre de la función. Y ahora dentro,
vamos a proporcionar dos parámetros que
van a ser A y B, dos puntos, ¿bien? Ahora, devuelve A más B. Aún no
hemos hablado de
la función return o return statement. Lo que hace aquí el retorno es
que simplemente va a devolver el valor de una operación
en particular. En este caso,
ahora mismo, va a devolver los valores de A y B
cuando se sumen juntos. Eso es lo que hace el retorno. Entonces ahora voy a entrar
aquí y decir resultado. ¿Bien? El resultado va a ser igual
para sumar números. ¿Bien? Y ahora dentro, puedo sumar los
dos números que quiero agregar, digamos cinco y seis. Y ahora todo lo que voy a
tener que hacer es simplemente imprimir el resultado. Y ahí está. Si
quiero mi función, ahí van 11. ¿Ves cómo
funciona esto? En primer lugar, creamos una función, pero usando la
función definida llamada add numbers. Ese es el
nombre de nuestra función. Y luego dijimos: Bien,
nuestra función va a recibir dos parámetros, A y B. Y ahora con el retorno, básicamente
estamos definiendo qué
va a hacer la función. Va a devolver
el valor de A más B. Ahora, todo lo que tenemos que
hacer es crear una variable que almacene
el valor de nuestra función. Entonces ahora la variable
aquí se llama resultado, que es igual al número de anuncio. El nombre de la
función se llama
ahora mismo con los dos valores
que son cinco y seis, y ahora simplemente
imprimimos resultado, que es igual a 11. Así es exactamente como
parametrizar argumentos y también
funciona la función return Por cierto, antes de
redondear el video, una palabra muy rápida sobre
el comunicado de retorno. Se usa para dos propósitos
principales, ¿de acuerdo? El primer propósito
suele ser salir de una función. Entonces puedes usarlo para
detener la ejecución de la función. En segundo lugar, devolver
un valor real. Entonces, como ejemplo,
déjame mostrarte muy rápido. Si dije definir y luego saludar. Bien, déjame agregar
parámetros vacíos aquí. Y yo dije, imprimir hola. Y luego dije regreso Bien, pero luego después de regresar en
otra línea, también digo imprimir Y entonces, digamos, déjame decir,
como abrigos, hola Jack incluso puedes
ver ahora mismo que dentro de nuestra repleta el texto en
sí está un poco ajustado, es
decir, que Python no
ejecutará esta línea en particular Entonces, si tuviera que correr,
ya pueden ver, no
hace absolutamente
nada en absoluto, pero eso es porque aún no he
llamado a la función. Entonces déjame venir aquí y decir saludos y luego corchetes,
y ahí tienes Entonces, si tuviera que ejecutar la
función ahora mismo, se
puede ver que todo lo que dice
va a ser hola. ¿Por qué? Porque regresar aquí mismo
significa que, oye, detener la ejecución
de la función, no
debería ir más allá de
esta línea en particular Y por eso
sólo tenemos hola. No obstante, si tuviera que quitar
la declaración de retorno, y vuelvo a ejecutar el programa, se
puede ver ahora mismo que dice
hola y luego hola Jack. Entonces este es otro uso
de la sentencia return, pero puedes usarla para
detener la ejecución de la función, o como te mostré anteriormente, puedes usar la sentencia return para devolver un valor en particular. Gracias por
ver el video, los
veré en la próxima clase.
30. Argumentos de palabras clave: Bueno, vuelve.
Quiero que hablemos ahora de argumentos de palabras clave, ¿verdad? Funciones de Python,
básicamente nos permiten
pasar argumentos usando nombres de
parámetros. Los nombres de parámetros son lo
que denominamos palabras clave. Harán que un código sea más
legible y flexible, especialmente cuando estamos tratando
con muchos parámetros. Ahora, hasta ahora hemos estado tratando
con parámetros como A,
B, X, Y, pero déjame
mostrarte algo más, ¿de acuerdo? Voy a crear una nueva
función y llamemos esta función describir,
subrayar persona, ¿de acuerdo? Entonces esta función va a
describir el nombre de alguien, la edad, y digamos ciudad, ¿verdad? Entonces, permítanme agregar los
corchetes ahí dentro. Y ahora aquí dentro, podemos agregar el argumento de la palabra clave. Entonces voy a decir nombre, edad, y luego digamos ciudad. Bien. Y ahora para la función
real en sí misma, oh, perdón, me olvidé de
agregar los dos puntos. Y ahora la
función en sí misma, ¿qué va a hacer? Queríamos imprimir, Bien, John tiene 30 años y vive en Londres, solo
como ejemplo, ¿verdad Entonces voy a decir print, bracket y ahora la cadena F. ¿Bien? Y ahora abrigos
y ahora tirantes rizados Nombre espacio es llaves nuevo se llaman ahora
el perímetro de edad El soporte es viejo. Y dejaré que Python
termine el resto por mí. Y ahí está. Entonces básicamente, la
función dirá: Bien, Alex tiene 100 años y
vive en la ciudad de Nueva York, solo como Entonces echa un vistazo a esto. Voy a llamar a la función para que veas ahora mismo
voy a llamar a Alice. Gracias, Python por
brindar esta sugerencia. Entonces voy a decir que Alice tiene 25 años y
vive en Entonces, si ejecuto la función
ahora mismo, pueden ver que dice, Alice tiene 25 años
y vive en Bastante sencillo, ¿verdad? No obstante, échale un vistazo a esto. También puedo llamar a la
función proporcionando los valores para los
propios parámetros . Mira esto, ¿de acuerdo? Puedo decir describir a la persona. Y ahora entre paréntesis, en vez de decir:
Bien, Alex, 30, Londres, en cambio, puedo
decir que la edad es igual a 30. Y ahora coma. Y entonces
puedo decir que el nombre es igual a Bob City
es San Francisco. ¿Vías lo
que hice ahora mismo? En lugar de proporcionar
los valores reales para los argumentos directamente, acabo de decir, Oye,
voy a pasar los valores a los argumentos de
palabra clave. Por lo que la edad será de 30. Se llama Bob, la ciudad
es San Francisco. Y, claro, por favor
preste atención al hecho que Bob y San
Francisco son cuerdas. Por eso tienen
los códigos dobles. Mientras que 30 es un número entero. No es una cuerda.
Por eso no hay códigos. Entonces, si ejecuto la función, se
puede ver
ahora mismo que dice que Bob tiene 30 años y vive
en A pesar de que
aquí, la edad llegó primero. No dijimos que el nombre es igual a
Bob y luego a la edad o a la ciudad. No. Eso es porque
Python simplemente va a usar lo que hemos descrito en la propia
función real. No va a importar el
orden todos los argumentos. A Python no le importa eso. Todo lo que le importa a Python es, Bien, me
has dado los argumentos de las
palabras clave, bien. Y ahora esta es la orden. Se va a mirar la
función que dice: Bien, imprime primero el nombre y luego tiene 8 años y
luego vive Entonces estos son a los que nos
referimos como los argumentos de palabra clave. No es probable que
vayamos a trabajar con ellos más adelante en este
curso, pero sin embargo, esto es algo que al menos
debes tener en cuenta cuando estés
trabajando con Python. Así que gracias por
ver el video, los
veré en
la próxima clase.
31. Variables locales y globales: Bueno, bienvenido de nuevo.
Una última cosa de la que quiero que hablemos
antes de redondear la sección de funciones
será el concepto de alcance
variable. Ver, en Python, o de hecho, en cualquier lenguaje de programación, tenemos variables
tanto locales como globales. Las variables tienen el
alcance que
determinará dónde se
puede acceder a ellas. Ahora, las variables
que están dentro de una función serán
locales a esa función, y no se puede acceder a ellas
fuera de esa función. Mientras que las variables que
se definen fuera de cualquier función son globales
como ejemplo, ¿de acuerdo? X es igual, digamos 12, ¿verdad? Esto aquí mismo es a lo que nos
referimos como una variable global. ¿Por qué? Porque es por sí solo. No está dentro de ninguna función
o cualquier bucle o cualquiera si más, es por sí solo. Es sólo que X es igual a 12. No obstante, si creé mi propia función y
dije definir, subrayar,
modificar, variable,
corchete, dos puntos, y ahora dije, X es igual a tres La X aquí mismo
será lo que llamamos una variable local porque está dentro de la función que se modifica en la variable score. Entonces la
variable global de X es 12, la variable local de X
es tres porque, nuevamente, esta tres justo
aquí está dentro de la función modifivariable Así que echemos un
vistazo a esto, ¿de acuerdo? Voy a decirle a mi función que imprima el valor de X, ¿de acuerdo? Y ahora, voy a llamar a
la función modificar variable. ¿Cuál crees que va a ser el valor
de X aquí? El valor de X aquí
va a ser tres porque simplemente estamos llamando a la variable de función
modificada, que ya tiene el valor
de X para ser igual a tres. Entonces si ejecuto mi función, se
puede ver que es
justo ahí tres. Pero y si quisiera
llamar a la
variable global X es igual a 12. Quiero imprimir ese valor. Todo lo que necesito hacer es llamar
al comando print default
o print function four, Python, y luego
simplemente decir print X. Ahora, si vuelvo a ejecutar el programa, puedes ver tres y ahora 12. De nuevo, debido a que esta
impresión aquí mismo, no
es la misma impresión que está bajo la función de modificar
variable. Esta impresión
aquí está destinada a producir o
imprimir el valor de X, que es el valor local que está dentro de la función,
modificar variable. No obstante, esta impresión X w aquí notará nuevamente
la sangría No está dentro de esta
función, está afuera. Entonces la X aquí va a
ser la que pertenezca a la variable global,
que es 12. Esa es la diferencia entre variables
globales y variables
locales. Si quisieras obtener este valor particular
de X, que es tres, necesitarás llamar siempre a la función que alberga
o que posee ese valor
en particular, que es, por supuesto, variable
modificada. Pero la variable global, puedes acceder a ella en cualquier lugar
siempre y cuando no esté dentro
de la función. Sin embargo, en realidad podemos modificar el valor de nuestras variables globales
dentro de una función. Sí, podemos hacer eso.
Mira esto, ¿de acuerdo? Voy a volver a mi
función aquí, ¿no? Y justo debajo,
voy a decir global X. solo usar la
declaración llamada global, podemos modificar el valor
global de X. Así que ahora estoy diciendo global
X, X es igual a tres. En este caso,
ahora mismo, simplemente estamos modificando la variable global. Eso es lo que estamos haciendo
ahora mismo, simplemente vamos a modificar la variable global de X. Así que ahora, si llamé, si ejecuto mi programa, puede ver ahora mismo
que en primer lugar,
la variable modificadora de función X es igual a tres producirá tres. Y debido a que ahora hemos modificado la variable global de X para que
ahora sea tres en lugar de 12, incluso cuando llame a
la función print que está fuera de la función variable
modificada, todavía va a producir
tres porque, nuevamente, dentro de esta función, modificamos la variable
global X. Cambiamos el volumen 12-3
usando la palabra clave
global aquí mismo Entonces así es como también se
pueden modificar las variables globales dentro
de una función local. Muchas gracias por
ver el video. Te veo en
la siguiente clase.
32. Introducción a la sección de estructuras de datos: Bienvenido a la sección de
estructuras de datos. Y aquí, nos
vamos a centrar en tres tipos principales de estructuras
de datos. Vamos a hablar de
listas, diccionarios y conjuntos. Y, claro,
voy a
resaltarte las diferencias
entre estos tres. Entonces vas a
aprender exactamente qué hace que una lista sea diferente
de un diccionario. Vas a aprender
exactamente qué es un conjunto. Y luego una vez que hayas
aprendido a crear tus propios conjuntos y
diccionarios y listas, vamos a aprender a
incorporar bucles en ellos. Entonces digamos, por ejemplo,
tienes una lista de contraseñas y querías un bucle para pasar por cada
contraseña y hacer algo, vas a
aprender a hacer algo similar en esta sección en
particular. Y, por supuesto, va a
haber una gran variedad de diferentes ejercicios de
codificación, así que por favor inténtelos. También van a haber dos
retos de programación, que, por
supuesto, voy a guiarte a través de cómo resolverlos. Y, por supuesto, al
igual que con cualquier otra sección al final, vamos a tener el
principal ejercicio de codificación que quiero que intentes. Así que por favor asegúrate de
hacerlo sin perder más
tiempo, vamos a saltar justo adentro.
33. Listas: Bien, entonces comencemos hablando
de listas. Ahora, las listas no son
nada nuevo para nosotros. De hecho ya hemos trabajado con
bastantes listas. Hemos tenido listas de nombres, listas de autos, etc. Pero una cosa de
las listas es que son lo que llamamos mutables Es decir, que los ítems o elementos que
tienes en una lista, realidad
podemos
modificarlos, ¿verdad? Entonces podemos agregar a la lista. Podemos eliminar de la lista, y podemos modificar los elementos
que ya existen dentro de
esa lista en particular. Ahora, por aquí,
tengo una lista de contraseñas
comprometidas. Entonces, la contraseña habitual,
uno, dos, tres, cuatro, cinco, QW, TY, y así sucesivamente Ahora, quiero
mostrarte algunas cosas que
podemos hacer aquí, ¿verdad? Puedo decir impresión, ¿de acuerdo? Y ahora entre paréntesis, puedo llamar a la lista contraseñas de
compromiso. Y ahora puedo proporcionar el número de índice del
ítem que quiero enumerar. En este caso, ahora mismo,
es el índice número cero. Si ejecuto mi programa, puedes ver que
va a ser contraseña. Entonces lo primero que quiero
que entiendas es que los ítems de una lista, todos
tienen números de índice a
partir de cero. Entonces, si tuviera que imprimir el
índice número dos, ¿
cuál crees que sería
la respuesta? Sí, va a ser QWERTY. Bien, eso es lo primero
que quiero que entiendas. A continuación está el hecho de
que podemos realizar diversos tipos de
funciones en nuestra lista. Por ejemplo, puedo decir, déjame volver a llamar a la lista, y ahora puedo agregar esta
función aquí llamada append Anexar aquí mismo
en términos técnicos, es a lo que nos referimos como un método Los métodos también son funciones, pero son
tipos de funciones muy especiales. Hablaremos de
métodos un poco más tarde. Pero por ahora, solo
entiende que sí
tenemos funciones muy especiales a las que llamamos métodos que
puedes aplicar
directamente a las listas y
van a hacer algo. Entonces en este momento, lo que haría un
pend es que agregará cualquier nuevo ítem que
queramos a nuestra lista Como ejemplo, puedo
abrir mis corchetes. Y digamos que agregamos pez
espada. ¿Bien? Esta es otra
contraseña
muy, muy popular utilizada por
mucha gente, ¿de acuerdo? Por lo que he anexado a la lista
Pez salado. Entonces, si vuelvo ahora mismo e imprimo mis contraseñas
comprometidas, puedes ver que Sordfsh ha
sido agregado a la lista Entonces este es el
primer método o función que quiero
que entiendas que puedes usar con tu lista. El siguiente
va a ser lo que
llamamos la función extend. Ver, un bolígrafo con un bolígrafo, puedes agregar ya sabes, elementos
individuales, elementos, etc. Con Extender, en realidad
puedes agregar todos los elementos de otra lista. Entonces como ejemplo, tengo mi primera lista
ahí mismo, contraseñas de compromiso. Y digamos que hemos creado otra lista de
contraseñas comprometidas. ¿Bien? Es igual, y ahora permítanme
abrir los corchetes aquí. Y agreguemos un nuevo lote
de contraseñas. A ver. Tenemos una de
las contraseñas muy comunes que la
gente suele usar. Bien, digamos uno, dos,
tres, A, B, C, qué tal eso. Y déjenme añadir uno más. Y llamemos a
un perro, gato, hueso. Ya sabes, sólo algo, ¿verdad? Bien, entonces ahora tenemos dos listas
diferentes, ¿verdad? Una para las
contraseñas de compromiso y luego otra para las nuevas contraseñas de
compromiso. Así que mira esto, ¿de acuerdo? Puedo venir aquí
ahora mismo y decir, comprometer contraseñas
y ahora extender. Y ahora entre paréntesis, puedo decir nuevo sobre esta contraseña
comprometida. Entonces básicamente, estoy adjuntando las nuevas contraseñas a
la lista de contraseñas antiguas. Y ahora, si ejecuto mi programa, ahora puedes ver que 123
ABC y perro gato Bone se
han agregado a mi lista de contraseñas
comprometidas. Ahora bien, otro método
del que
quiero que estén al tanto va a ser todo lo contrario de append
que se va a eliminar Entonces permítanme antes que nada, cortar nuestra primera o
segunda lista más bien y voy a modificar esta línea aquí mismo
y luego decir, eliminar. Y ahora entre paréntesis, sólo como ejemplo, bien, puedo proporcionar lo que
quiero quitar, que es uno, dos,
tres, cuatro, cinco. Entonces digamos que quería
quitar este
elemento en particular muy, muy fácil. Yo solo diré No elimines, corras, y ahora puedes ver
que 12, tres,
cuatro, cinco ya no está en la lista de contraseñas de
compromiso. Así que muy, muy directo. Otra que podemos hacer
es simplemente despejar. Podemos borrar toda la
lista como ejemplo. Entonces, si iba a
venir aquí ahora mismo, cambiar quitar a Clare, ¿verdad? No necesito tener nada
dentro de los soportes. Entonces solo Clare y Iron, ahí tienes,
va a estar vacío Ya no hay nada dentro
de la lista. Entonces hay
bastantes otros métodos con los que puedes caminar. Creo que son alrededor de 11 de ellos. Pero déjame darte
dos más, ¿verdad? Otro más que podamos usar
va a ser inverso, ¿verdad? Entonces básicamente, lo que esto
simplemente hará es que
invertirá los ítems en la lista el orden.
Va a revertir el orden. Entonces si ejecuto esto, ahí tienes, comienza desde Uh, déjame entrar y va hacia atrás
hasta llegar a la contraseña. Y entonces uno más que
quiero mostrarles que puede ser muy útil
sería el método copy. Entonces, como ejemplo, por aquí, déjame venir
aquí y voy crear una copia de seguridad, ¿de acuerdo? Así que copia de seguridad y digamos cuentas de
subrayado, ¿de acuerdo? Puedo asignar la copia de seguridad a mis cuentas de respaldo variables
y ahora puedo decir iguales, y ahora contraseñas comprometidas, y ahora punto, copia y ahora entre paréntesis. Bien, así que básicamente, lo que estoy haciendo ahora mismo es que me
gustaría hacer una
copia de seguridad de esta lista,
esta lista de contraseñas
de compromiso y luego asignarla a
las cuentas de
respaldo variables Entonces ahora si tuviera que imprimir las cuentas de
respaldo y corro, verá ahora mismo que
tenemos exactamente la misma lista, exactamente
los mismos artículos. Entonces esto es lo que
usarías para crear copias de seguridad o copiar los elementos
en una lista en particular. Entonces como dije, tienes algunos otros como
sort, pop, y así sucesivamente. Vamos a
hablar de métodos un poco más adelante en el curso. Pero por ahora, esa es la
introducción a las listas y los métodos que puedes
usar para trabajar con ellas. Gracias por ver. Te
veré en la siguiente clase.
34. Cómo usar bucles en una lista: Continuar trabajando con nuestras listas, y quiero que intentemos escribir un programa que simplemente
imprima los días de alta actividad. Ahora bien, lo que ves
en mi pantalla es una lista de
intentos de inicio de sesión por día. Así que escribamos un programa
que pasará por esta lista y luego
imprima los días de alta actividad. No obstante, para determinar cuál sería
una actividad alta, digamos intentos de inicio de sesión
que son diez o más. Bien. Entonces, para ello, vamos a crear una variable que almacene los días
de alta actividad. Entonces puedo decir alta
y luego subrayar actividad en los días de
puntuación. Bien. Ahora esto va a ser
igual a digamos intentos. ¿Bien? Queremos
crear un bucle de cuatro que vaya a
pasar por la lista, ¿de acuerdo? Entonces tenemos nuestros corchetes aquí, y luego puedo decir
intento, Bien,
cuatro, ¿ recuerdas ahora por intento en dónde estamos comprobando
el número de intentos? Va a estar en la lista de intentos de
inicio de sesión. Entonces voy a decir en los intentos
de inicio de sesión. Y ahora aún no hemos
hablado de esto, pero también se puede incluir una declaración if directamente
dentro de un bucle de cuatro. Entonces queremos crear un bucle que
vaya a pasar por nuestra lista, y luego si el intento
es de diez o más, vamos a imprimir
un día de alta actividad. Entonces intento por intento
en intentos de inicio de sesión. Ahora bien, si el intento es
mayor o igual a diez. Lo entendiste, ¿de acuerdo? Entonces ahora, ¿qué debería pasar? Simplemente vamos a imprimir. Y luego entre paréntesis,
podemos decir algo como días de alta actividad,
colon, y luego coma, días de actividad de subrayado
alto Entonces ahora si ejecuto el
programa, y ahí tienes. Los días de alta actividad, tenemos diez, 12, 15 y 20. Entonces así es como podemos
ejecutar un bucle de cuatro para
ir a través de nuestra lista y luego
imprimir o hacer otra cosa. Entonces voy a
brindarte un ejercicio, un reto en el siguiente video. Por favor, revíselo e intente responder
a las preguntas. Gracias por
ver el video. Te veo en
la siguiente clase.
35. Diccionarios: Hablemos de diccionarios. Y al igual que con las listas, puedes modificar, puedes agregar, eliminar elementos en
tus diccionarios. Sin embargo, la principal
diferencia entre tus listas y tus
diccionarios es que a diferencia tu lista donde
tienes elementos
o valores individuales o elementos
en tu diccionario, vamos a tener lo que
denominamos un par de valores clave. Entonces, como ejemplo, puedo tener un diccionario
llamado user info, y ahora es igual voy a usar
ahora las llaves, bien, normalmente usamos las
llaves para Entonces aquí, puedo tener
información como el nombre de usuario, que sería admin. Entonces aquí mismo, username
va a ser la clave mientras admin va
a ser el valor de la clave. También podemos tener
una contraseña, ¿de acuerdo? Y digamos que la contraseña aquí es dejarme entrar solo como ejemplo. E incluso podríamos tener
otro, como, digamos, el último inicio de sesión. Bien, último inicio de sesión, llame, y puedo tener una
fecha, digamos, 2024 10-22, solo como
ejemplo, ¿verdad Así que tenga en cuenta que
cada vez que esté agregando sus pares de valores clave
en su diccionario, al final de cada línea,
tendrá la coma Pero entonces para el
último par de valores clave, no
hay necesidad de agregar la
coma al final, ¿verdad? Entonces solo toma nota de eso. Entonces esto es a lo que nos
referimos como diccionario, ¿verdad? Tenemos nuestros
pares de valores clave, nombre de usuario, el valor es admin, tenemos la contraseña clave, el
valor es dejarme entrar. Y claro, tenemos
la clave último inicio de sesión, y luego tenemos la
fecha ahí como valor. Entonces a partir de aquí,
podría decidir
imprimir la información. Podría bajar aquí
y luego decir “print”. Y ahora si quisiera
imprimir, digamos, el nombre de usuario, primero
comenzaría diciendo user
underscore info, y ahora los
corchetes regulares aquí, simplemente
diría
nombre de usuario, y eso es todo Entonces ahora si en cuanto a ejecutar, puedes ver admin
ha sido proporcionado. Entonces así es como puedes imprimir los valores de las claves
en tu diccionario. Simplemente indica la clave cuyo valor desea imprimir y el programa
hará el resto. Bueno. Ahora, igual que
dije con los diccionarios, puedes agregar o
modificar fácilmente los elementos
en tu diccionario. Entonces, por ejemplo, si quisiera agregar alguna
información nueva como,
digamos, el
correo electrónico del usuario, todo lo que necesito hacer ahora mismo es que pueda bajar aquí
y simplemente decir información de subrayado de
usuario, Bien Y ahora voy a tener
los corchetes regulares, y ahora simplemente voy a
agregar la clave aquí, que va a ser correo electrónico. Y luego muy simple,
solo voy a decir iguales, y ahora puedo agregar la dirección de
correo electrónico ahí mismo. Digamos que admin
en labcyber.com. Bien. Sólo como
ejemplo, ¿verdad? Entonces, si tuviera que
bajar aquí ahora mismo e imprimir la información del usuario, permítanme simplemente quitar
la clave ahí. Por lo que queremos imprimir toda la
información del usuario aquí. Yo dirijo el programa,
y ahí está. Va a
imprimirlo todo. Entonces nombre de usuario es admin. La contraseña es dejarme entrar.
El último inicio de sesión es esta fecha, y luego el correo electrónico ahí mismo
es admin en labsyber.com También podríamos actualizar. También podríamos actualizar la
información en nuestro diccionario. Entonces una vez más, como ejemplo, si quería actualizar,
digamos la contraseña, ¿verdad? Entonces puedo decir usuario
Oder score info, y ahora entre paréntesis, claro, la clave
aquí va a ser la contraseña, ¿verdad? Entonces contraseña. Y ahora necesito proporcionar
la nueva contraseña. Entonces llamémoslo pez
SOD. Pescado SOT. Y ahí está. Si ejecuto mi programa, ahora se puede ver que
la contraseña
efectivamente ha cambiado a SOD fish Así que al igual que con tus listas, puedes agregar nuevos
pares de valores clave a tu diccionario, también
puedes modificar los
valores de las claves existentes. Además, al igual que con las listas, tenemos una variedad
de métodos que
realmente podemos aplicar a
nuestro diccionario. Entonces el primero
aquí del que quiero hablar aquí va a
ser el método G, que recuperará el
valor asociado a una clave. Entonces, por ejemplo,
permítanme eliminar toda esta
información aquí, ¿verdad? Si quería imprimir
la información del usuario, o cuando obtengo el nombre de usuario, el valor del nombre de usuario clave, todo lo que necesito hacer
aquí es que puedo decir imprimir user dot info y
luego punto G. Bien. Y ahora otra vez entre paréntesis, voy a añadir ahora la clave
que es el nombre de usuario. Entonces esto de aquí mismo debería
imprimir el nombre de usuario. Si corro, ahí está admin. Así que al igual que con tu lista que usamos una pluma, copia y así sucesivamente. Tenemos exactamente los mismos
métodos también para diccionario, y llegar justo aquí
es uno de ellos. Otro método va a ser las claves donde simplemente
puedes
imprimir todas las claves que
tenemos en un diccionario. Así que déjame eliminar toda la
información aquí. Entonces si corro, ahí tienes. Tenemos todas las claves
que son nombre de usuario, contraseña y último inicio de sesión. También tenemos lo contrario
que serían los valores. Entonces es una especie de llaves.
Voy a cambiar este de aquí a valores
y si corro, ahora vamos a
tener todos los valores listados en la salida. Ahora, también podríamos crear un bucle que
pasará por nuestro diccionario. ¿Y cómo podemos hacer esto? Bueno, podemos usar el bucle cuatro porque
tenemos un diccionario. Recuerda que los
cuatro bucles funcionan bien con listas,
diccionarios y así sucesivamente. Así que voy a decir cuatro, y ahora voy
a tener que decir Key, ¿de acuerdo? Entonces para clave y luego valor de
coma en, y ahora usuario subrayado info, y tenemos que agregar
otro método llamado items items
y ahora corchetes, dos puntos, y ahí está Así es como crearás tu loop que
recorrerá tu diccionario. Entonces va a decir
cuatro claves valor de coma, y luego en el diccionario de nombres, y luego vas a
agregarle el método items Y ahora todo lo que tenemos que
hacer desde aquí es simplemente imprimir
la información. Entonces voy a decir imprenta. Y usemos la cadena F. Entonces nuestros corchetes regulares primero. Y ahora la cuerda F
y ahora abrigos, llaves
rizadas para sostener
y mostrar la clave, y ahora vamos a tener dos puntos, y ahora las otras llaves
rizadas para sostener
qué mantener el Y ahora si corro, ahí tienes, usa el nombre Admin, contraseña
déjame entrar y por supuesto, la última
fecha de inicio de sesión ahí mismo. Así que también puedes usar bucles para recorrer tus diccionarios, tus listas, etc. Entonces eso es todo para los diccionarios. Alegría en el siguiente
video, donde
ahora echaremos un vistazo a
lo que denominamos diccionarios anidados.
Te veré entonces.
36. Diccionarios anidados: Y atrás. En la lección
anterior, hablamos de diccionarios, pero ahora vamos a
ir un paso más allá para hablar de diccionarios anidados Entonces básicamente, diccionarios
dentro de otro diccionario. Hasta ahora, hemos estado tratando
con una sola información de usuario. Pero, ¿y si tuviéramos
múltiples usuarios, verdad? ¿Cómo podemos crear esto? Entonces lo que voy a
hacer aquí mismo es, cambiemos el nombre información
de usuario a
credenciales de usuario, ¿verdad? Este va a ser el
nuevo nombre para un diccionario, y ahora llaves rizadas Ahora podemos agregar el
primer diccionario NSTA que contendrá la
información para Admin Entonces voy a venir
aquí mismo, escribe Admin. Ese será nuestro primer usuario. Y ahora las credenciales,
llaves. Vamos con contraseña. Contraseña aquí. El colon, y luego podemos ir
con admin 123. ¿Bien? Entonces el primer usuario aquí, admin, la contraseña
va a ser admin 123, y podemos agregar
otra credencial que sería el último inicio de sesión Entonces último inicio de sesión vamos a tener
este en nuestros códigos. Vamos a iniciar sesión. Ahora colon. Vamos a agregar las fechas. Digamos, algo así como 202-04-1019 Bien. Sólo como ejemplo, aquí
hay un poco de
flecha. Déjame ver qué es exactamente lo que
estoy haciendo mal? Ah, por aquí con contraseña, la columna debería estar afuera. Yo cometí un error ahí.
Bien, mucho mejor. Entonces este es el primer diccionario de
Nesta que tenemos admin que tiene los pares de valores
clave Tiene la contraseña clave, y el valor para una contraseña aquí va a ser admin 123. Y entonces la otra clave aquí
va a ser el último inicio de sesión, y el valor es,
por supuesto, 2024, 1019 Pero podemos agregar
otro diccionario. Voy a decir coma. Y ahora podemos agregar otro usuario. Llamemos a esta persona usuario uno. Y sólo voy a
dejar que repl haga el resto, llene toda la información
ahí dentro y ahí va usted Entonces el
día de la contraseña va a ser usuario uno, uno, dos, tres, y luego el último inicio de sesión también es No, cambiemos la fecha
aquí por otra cosa. Entonces vamos con 06
y luego tal vez un 14. Muy bien, por variedad. Entonces esto de aquí mismo
es a lo que nos referimos como un diccionario anidado El diccionario está dentro
de otro diccionario. Y por supuesto, podemos acceder a la información bastante
sencillo. Entonces, por ejemplo, si
quería
imprimir la contraseña para el Administrador, ¿cómo puedo hacer esto, bien? Simplemente puedo decir imprimir. Y ahora entre paréntesis, voy a decir credenciales de
subrayado de usuario, ¿de acuerdo? Y ahora los corchetes regulares
y dentro de las capas dobles, voy a decir admin. Bien. Y ahora queremos imprimir la contraseña
para el administrador. Así que entre corchetes otra vez,
agreguemos contraseña. Y ahí está. Entonces si ejecuto el
programa ahora mismo, puedes decir que dice Admin uno
a tres porque al decir, Hey, imprime desde el diccionario de
credenciales de usuario, queremos que
imprima el valor de la contraseña clave que pertenece
al usuario admin. Y por eso
tenemos Admin 123. O podría decir,
bien, imprimir y corchetes, credenciales de
usuario, y vamos a
imprimir el último
inicio de sesión para el usuario uno. ¿Cómo vamos a hacer esto?
Nuevamente, muy sencillo. Simplemente voy a entrar
aquí y decir usuario uno, y ahora nuevos corchetes
y luego simplemente poner en la última clave de inicio de sesión, última en la partitura, iniciar sesión. Y ahí tienes. Así que corre, y ahí vas 202-04-0614 Entonces esto de aquí mismo es un
ejemplo de diccionarios anidados. Y esto puede ser
particularmente útil si estás intentando
crear funciones o programas para firewalls o una herramienta pastor check in o una herramienta que verifique credenciales de usuario,
cosas así, ¿verdad Puede usar diccionarios anidados para ese tipo de programas Así que gracias por
mirar, y, por supuesto, te
veré en la próxima clase.
37. Conjuntos: Continuar con las estructuras de datos, y lo siguiente va a
ser lo que llamamos conjuntos. Ahora, en mi pantalla aquí mismo, parece que tengo dos listas distintas que son similares en los
elementos dentro de ellas. Sin embargo, observe que las contraseñas de
compromiso usan los corchetes regulares, mientras que las nuevas
contraseñas de compromiso usan las llaves Ahora bien, créanlo o no, esto es sumamente importante porque los corchetes regulares indican que
estos elementos están en una lista, mientras que las llaves
indicarán que los ítems no
están en una lista, sino dentro de un conjunto Entonces la pregunta natural en
este momento sería, bueno, ¿cuál es la diferencia entre una lista y un conjunto? Hay
bastantes de ellos. El caso es que, con
tus artículos en una lista, puedes ordenarlos.
Puedes ordenarlos. Puedes referenciarlos
usando un número de índice, mientras que en un conjunto, no
están en ningún orden en
particular. Están ordenados, ¿verdad? De hecho, te lo demuestro. Si tuviera que imprimir ahora mismo las
contraseñas comprometidas, ¿verdad? Y luego también imprimo
las nuevas contraseñas de compromiso
mira el pedido. Para la lista real, se
puede ver que sigue la misma
contraseña de pedido, 1234 QWERTY Pero con el set, es
casi algo aleatorio. Partió en 123, cuatro, luego fue a ABC 123, fue a Monkey, y así sucesivamente. Entonces la cosa es con los conjuntos, los artículos no están en ningún tipo de orden en
particular. Otra gran diferencia es que tu lista permitirá
duplicados, ¿verdad? Entonces, por ejemplo, podría agregar
en mi lista 123, cuatro nuevamente. No obstante, si tuviera
que hacer lo mismo en mi set, notarán la diferencia. Entonces si corro, de nuevo, se
puede ver ahora mismo en
la lista, 1234 se repite. Mientras que en el set, 1234 aparece solo una vez.
No está permitido. No se te permite tener
duplicados en tus sets. Y es por eso que cada vez que
intentas
crear una función o
un programa que involucre, como, una lista de elementos que
deben ser únicos, como, digamos, contraseñas o
direcciones de correo electrónico o cuentas de usuario, quieres usar conjuntos para esos en lugar de
lista porque sabes que,
bien, no hay dos usuarios que puedan tener exactamente
las mismas credenciales. Por lo que será más
ideal usar un conjunto. Por lo tanto, los conjuntos suelen ser
mucho más rápidos de ejecutar. El programa puede correr
a través de un conjunto mucho
más rápido de lo que sería una lista. Ahora, ambos son mutables. Tus listas y tus
conjuntos son mutables, lo que significa que
puedes hacer cambios Puede agregar elementos, mover
elementos, puede modificarlos. Y eso es prácticamente todo. Pero al igual que con sus listas, también
tenemos
operaciones o métodos que podemos usar en nuestros conjuntos, realidad los llamamos operaciones
matemáticas como intersección de unión,
diferencia. Déjame mostrarte, ¿de acuerdo? Déjame quitar esto aquí mismo. Y ahora, déjame venir aquí y vamos a trabajar con
dos conjuntos diferentes. ¿Bien? Creo que ya no necesito
esta línea, en realidad. Bien, entonces aquí mismo,
hemos puesto uno, hemos establecido dos, y luego
ambos tienen dos direcciones IP. Ahora, podría decidir encontrar direcciones
IP que sean
comunes en ambos conjuntos, ¿verdad? Entonces podría decir, por ejemplo, IPs de subrayado
común
ahora serán iguales a establecer
una, y ahora unión ¿Bien? Entonces intersección, ¿verdad? Intersección y ahora establece dos. Entonces intersección aquí mismo
es lo que nos referimos como un operador que encontrará los elementos comunes
en ambos conjuntos. Entonces, si iba a subir
ahora mismo y luego decir print, IPs
comunes y ejecuto, verás que 10.0.0.1
es común en ambos Por eso se imprime. Pero también tenemos lo que llamamos el operador matemático de la Unión. Así puedo cambiar un símbolo
aquí mismo por el símbolo de la unión. Lo que esto hará,
es como el método extend para la lista donde agregarás los elementos
de una lista a otra. Entonces ahora mismo, si corro, se
puede ver que ahora tenemos
todas las direcciones IP. No obstante, toma nota que de nuevo, debido a que se trata de un conjunto, la IP 10.0.0.1 que está presente en ambas solo se
listará una vez, Tenemos otro
operador aquí, que será el operador de
diferencia. Solo usa el signo menos. Ahora bien, lo que esto hará es que encontrarás elementos
que están presentes en un conjunto, pero no en el otro. Entonces si ejecuto esto ahora mismo, se
puede ver que 192 uno.uno.01 es un elemento
que está presente
en el primer conjunto, pero está ausente en Entonces podemos hacer lo contrario, ¿de acuerdo? Puedo decir conjunto dos menos conjunto uno, y ahora esto nos dará
el 19216 ocho.uno.102,
que está, por supuesto, presente en el conjunto dos,
pero no
presente en el conjunto uno pero no También tenemos métodos como
tu add, remove, Clare. Entonces como ejemplo, si quisiera agregar una nueva dirección
IP para establecer una, todo lo que tendría que hacer aquí es, solo
diría establecer
uno y ahora agregar punto,
y ahora entre paréntesis, puedo agregar la nueva dirección IP, así puedo decir 192.168.0.10 Bien, sólo como ejemplo. Entonces ahora, si tuviera que
imprimir set uno, corre, y ahí tienes. Se puede ver ahora mismo que 192-16-8010 de hecho
se ha agregado También puede tener otros
métodos como remove, clear, y así sucesivamente, no dude en
buscar esto en el sitio web de Python
si lo desea. Entonces eso es todo por sets
gracias por ver. Te veré en
la siguiente clase.
38. Programación de conjuntos y bucles de desafíos: Regresa. Ahora, quiero guiarte
a través un ejercicio que tiene dos tareas. Y en mi pantalla, se
puede ver que tenemos un diccionario de diferentes logs. Se pueden ver los pares de
valores clave ahí, el nombre de usuario, y luego las IPs, y luego los estados, ¿verdad Entonces las dos tareas son las siguientes. En primer lugar, queremos
identificar e imprimir todas las
direcciones IP únicas en los registros. Y entonces, segundo, es buscar una dirección IP especial
que pueda existir. Si existe, entonces
vamos a imprimir algo. Si no existe, podemos
imprimir otra cosa. Así que eres más que bienvenido a pausar el video e intentar resolver estas
dos tareas por tu cuenta. Una pista que voy a dar es que definitivamente
vamos a tener que trabajar con algún tipo de bucle de cuatro que
iba a pasar por cada registro y luego sobre todo buscar la
val de las direcciones IP, y vamos
a tener que pasar los resultados a un conjunto porque recuerda
que con conjuntos, no
vamos a
tener ningún duplicado Y como estamos
buscando direcciones IP únicas, conjuntos serían la forma
ideal de hacerlo. Para que puedas pausar el video
y probarlo por tu cuenta. Si no, te voy a explicar cómo podemos
resolver ambas tareas. Entonces, antes que nada, Tarea uno, necesitamos identificar todas
las direcciones IP únicas. Entonces, una cosa que
podríamos hacer en este momento es que simplemente podríamos crear un conjunto que vaya a almacenar
estas direcciones IP únicas. Y voy a llamar a ese
conjunto IPs únicas. Bien. Y ahora, lo que voy a
hacer es porque es un set, voy a
abrir mis lugares rizados. Pero ahora piénsalo, ¿de acuerdo? Queremos pasar por cada registro. Y luego buscar el
valor de la clave I P. Así que mira esto, ¿de acuerdo? Voy a decir log, y ahora voy a
abrir mis corchetes
porque queremos
apuntar a cuál es la
clave, que es IP. Entonces esencialmente,
estamos diciendo, Bien, para cada registro, vamos
a acceder a la IP, y ahora voy a introducir
mis cuatro bucles diciendo cuatro registros de inicio de sesión. ¿Correcto? Entonces, lo que hemos hecho en
este momento es que hemos creado los cuatro bucles que
pasarán por cada registro en nuestro diccionario de registros, y
buscaremos específicamente el valor de la clave IP. Entonces, como hemos pasado
todo a un set, todo lo que tenemos que hacer
ahora mismo es simplemente imprimir. Y luego entre paréntesis, podemos decir algo así como direcciones IP
únicas, dos puntos y luego
simplemente agregar una coma, y ahora IPs de subrayado únicas Y ahí está. Estoy
bastante seguro de que podrías haber esperado que esto tomara
algunas líneas más de código. Entonces enhorabuena si pudiste resolver
esto por tu cuenta,
independientemente de si
fueron o no dos líneas o tres líneas o
cuatro líneas o cinco líneas porque hay otras formas de
cómo podríamos resolver la tarea, pero esta es fácilmente la forma
más
corta y efectiva. Entonces déjame seguir adelante y
ejecutar el programa
ahora mismo solo para asegurarme de que
funcione, y ahí tienes. Impresionante. Entonces tenemos
todo ahí, 182, 168, 11, un punto cinco, uno a dos, un punto cuatro, y luego un punto tres. Impresionante. Fresco. Bien. Siguiente va a
ser la tarea dos. ¿Bien? Entonces, ¿qué estamos
buscando aquí? Buscamos una IP
especial que sea igual a 182168, un punto cuatro Entonces podemos decir
IP especial es igual a 19216814. Entonces, ¿qué vamos
a hacer ahora mismo? Tendremos que usar la
declaración Is porque
estamos diciendo, Bien, si esta dirección IP especial
se encontró en esto,
haz esto, de lo contrario, haz otra
cosa. Entonces voy a decir
si especial subrayan IP en lo que N donde
en nuestro conjunto único Subrazo único
Lo siento, IPs únicas, IPs subrayado
bastante únicas.
Qué queríamos hacer. Queríamos decir print, y luego podemos decir, ya sabes, se encontró una dirección IP
especial, ¿de acuerdo? De lo contrario. Oh, perdón por eso Y entonces podemos decir otra cosa Imprimir. Y entonces no se encontró
la dirección IP especial. Y ahí tienes. Bien. Sigamos adelante, ejecutemos el programa,
y ahí está. De hecho
se encontró la dirección IP especial. Ahora bien, si cambio cuatro
aquí por digamos diez, solo para asegurarme de
que realmente está funcionando, y
vuelvo a ejecutar el programa, ahí tienes. No
se encontró la dirección IP especial. Entonces, una vez más, enhorabuena
si pudiste resolver cualquiera de las tareas o
ambas tareas por tu cuenta. Si no, no te preocupes. Todo es parte del proceso de
aprendizaje, pero
ahora mismo te voy a
dar un ejercicio que tendrás que
intentar por tu cuenta. Entonces te veré
en la siguiente clase.
39. Programación de diccionarios y bucles para desafíos: Bienvenido de nuevo. Entonces
he decidido agregar una tarea más para
que sea la tercera tarea, y va a ser un
poco más complicada. Y esta tarea va a
implicar contar el número de intentos
fallidos de inicio de sesión por usuario. Entonces, esencialmente, vamos
a revisar cada registro, contar el número de veces un usuario en particular
falló en su estado, y luego simplemente
imprimir Ale tiene, ya sabes, cuatro flautas, Bob tiene una filure y así sucesivamente,
ya sabes, algo así Entonces eres más que
bienvenido a pausar el video e intentar resolver
esta tarea por tu cuenta. Si no, pasemos por
los dos juntos. Entonces, como dije antes, tengo mi archivo
de bloc de notas aquí porque
quiero que abordemos
esto lógicamente, Entonces vayamos paso a paso. La primera
pregunta aquí es ésta. ¿Vamos a estar
tratando con un conjunto, un diccionario o una lista? Vamos a pensarlo, ¿
verdad? Obviamente, no puede ser un conjunto porque los conjuntos
no aceptan duplicados. Entonces, si vamos a
usar un set aquí y Bob tuvo un intento
fallido de inicio de sesión, la segunda vez que Bob
tiene un intento fallido, el conjunto no lo
aceptará porque conjuntos de
recordar no
aceptan duplicados Entonces los sets no funcionarán aquí. Tampoco puede ser una lista
porque piénsalo, ¿bien? Necesitamos asociar el nombre de usuario con el número
de veces que han fallado, y son los diccionarios los que son excelentes para trabajar
con pares de valores clave. Entonces la clave aquí
será el nombre de usuario, y entonces el valor va a ser el número de veces que ese nombre de usuario en
particular ha
fallado en su estado. Entonces vamos a estar
trabajando con un diccionario. Entonces necesitamos diccionario
para almacenar el nombre de usuario y sus respectivos intentos fallidos de inicio de
sesión, ¿verdad? Bien. Ahora bien, ¿qué necesitamos hacer para averiguar
realmente el número de veces que cada usuario ha llenado? Necesitamos crear un bucle de cuatro. Entonces para loop para
pasar por cada registro, ¿verdad? Y luego un bucle, cuando pasa por un registro, ¿qué buscamos exactamente? Queremos buscar el
estatus que dice fracaso. No nos
interesa el éxito. Nos interesa el fracaso. Entonces podemos decir si el estatus. Entonces, si el estatus, equivale al fracaso. ¿Qué queremos hacer?
Queremos identificar el nombre de usuario
asociado a esa falla. Así que vamos a extraer
el nombre de usuario, ¿de acuerdo? Vamos a extraer el
nombre de usuario y luego podemos almacenarlo en una variable llamada, digamos nombre de usuario, ¿verdad? Así podemos almacenar los nombres de usuario
en la variable, nombre de usuario. Entonces una vez que se
haya encontrado ese nombre de usuario, permítanme corregir este extracto. Bien, entonces una vez que se
ha encontrado que
un nombre de usuario tiene un estado o falla, hay dos escenarios posibles aquí
hay dos escenarios posibles. Piénsalo, ¿de acuerdo? Es o bien esta es la primera vez que el nombre de usuario ha tenido un intento
fallido de inicio de sesión, o podría ser la segunda vez, la tercera
o la cuarta vez. Esencialmente, podría ser
que no es la primera vez. ¿Bien? Entonces necesitamos crear
condiciones para ambos, así podemos decir si es
la primera vez ¿Bien? Podemos decir, bien,
el nombre de usuario aquí, el puntaje es cero porque
es la primera vez, ¿bien? No obstante, si no es la primera vez, si
no es la primera vez, necesitamos agregar una, bien, y luego agregarla también
a su registro anterior. Entonces, si es la primera
vez, empiezas desde
cero, obtienes uno. Pero si no es la primera vez, si es la segunda
o la tercera vez, simplemente
vamos a agregar
una a tu registro anterior. Espero que eso tenga sentido. Y luego, finalmente,
podemos simplemente imprimir los intentos fallidos de inicio de sesión. ¿Bien? Para que puedas volver a pausar el video e intentar resolver esta
tarea por tu cuenta. Si no, escribamos
el programa juntos. Bien, entonces, ¿qué estamos
haciendo, antes que nada? Estamos creando nuestro diccionario. Entonces voy a llamar
al diccionario
intentos fallidos, ¿de acuerdo? Igual, y luego llaves rizadas, va a estar vacío porque
no hay nada ahí por ahora Entonces, a continuación van a
venir los cuatro bucles. Voy a decir para
log in logs, dos puntos. Y ahora, ¿qué
estamos buscando? Estamos buscando estamos
buscando verificar para ver si el nombre de usuario tiene
el estado de falla. Entonces específicamente,
estamos buscando
verificar si el estado
es un fracaso. Entonces voy a decir, me registro, y ahora queremos
apuntar al estado, ¿verdad? Entonces, si el estatus aquí es
igual, Oh, perdón por eso. Debería haber afuera. Entonces, si el estatus es igual
a lo que al fracaso. Si es igual al fracaso, qué estamos buscando, queremos extraer el nombre de usuario. Entonces voy a decir
nombre de usuario será igual a. Y ahora vamos a extraer el nombre. Voy a decir log, y
ahora entre paréntesis, nombre de usuario. Déjame agregar los
códigos ahí mismo. Y ahí tienes. Bien, entonces, ¿qué
hemos hecho hasta ahora? En primer lugar, hemos creado los intentos
fallidos del diccionario. Ahora, hemos creado nuestros cuatro bucles para pasar por cada registro en los registros y luego
buscar cualquier registro cuyo estado sea
igual a falla. Cuando encuentres ese estado
que es igual a error, vamos a extraer el nombre de
usuario y luego asignarlo al nombre de usuario
variable. Ahora recuerden, van
a haber dos condiciones. ¿Es esta la primera vez que este nombre de
usuario tiene el estado de falla o
no es la primera vez? Entonces, mira esto. Voy a decir, si Usa
un nombre Bien, no lo es. ¿Cómo verificamos si
es la primera vez? ¿Si no está en los intentos
fallidos? ¿Bien? Entonces al decir, si esta es
la primera vez que
realmente estamos descubriendo que este
usuario tiene un registro fallido, así podemos verificar que
diciendo use el nombre
no está en los intentos fallidos.
¿Qué queremos hacer? Queremos decir intentos fallidos. Y ahora entre paréntesis, usar un nombre va
a ser igual a cero. No obstante, si es para arriba,
perdón por eso. Permítanme intentos fallidos. Intento. En realidad, sí
me disculpo. He cometido un error
con los intentos. Que ella sea T para
el S ta ta ta ta. Sí me disculpo. Déjame agregar mi
T ahí y agregar mi T ahí. Bien, entonces, sin embargo, si no
es la primera vez, si es la segunda vez, la tercera
vez, ¿qué estamos haciendo? Estamos diciendo intentos fallidos. Y ahora, usa un nombre. Usar un nombre va a ser
igual más igual a uno. Porque vamos a estar
incrementando el valor. Si era uno antes, ahora
va a convertirse en dos, si eran dos antes,
ahora va a convertirse en tres y así sucesivamente. Quiero
señalar el hecho de que note los segundos
intentos fallidos aquí, es afuera. No está dentro de esta declaración de
If, ¿de acuerdo? Porque esto de aquí mismo, la línea
21 22 es solo para
verificar si el nombre de usuario
no existía previamente. Y ahora, el segundo
campo intenta aquí, esto es para comprobar si
efectivamente el intento fallido ya se
ha
registrado previamente y ahora estamos
incrementando en uno Entonces todo lo que tenemos que hacer
ahora mismo es imprimir Bien. Y luego asegúrate de que esto
esté afuera, imprime. Y ahora entre paréntesis, podemos decir algo así como intentos de inicio de sesión
llenos llenos llenos por usuario, y
luego simplemente ahora podemos agregar intentos de subrayado relleno Y ahí tienes. Bien, entonces
ojalá esto funcione. Yo voy a ejecutar el programa, y ahí tienes. Impresionante. Entonces, Bob tenía tres años. Alice tenía dos años, y Dave era uno. Creo que esto es correcto. Bob tiene uno aquí, uno, uno que son tres. Bien, Alice tiene. Alice
tuvo éxito aquí. Bien, esto es un fracaso
fracaso, dos, bien. Y entonces Dave es
uno. Y, por supuesto, Carol no tiró porque
Carol solo tenía un tronco, y ella tuvo éxito. Entonces eso es más o menos en
resolver esta tarea en particular. Entonces, una vez más, creamos un diccionario llamado intentos
fallidos. Creamos un bucle para pasar por cada registro
y luego decir: Bien, si encontramos un estado
que es fracaso, queremos verificar primero que nada,
queremos extraer el nombre de usuario
asociado a esa falla, y luego verificar para ver
si el nombre de usuario ha estado en nuestros intentos fallidos anteriormente o si
es la primera vez. Si es la primera vez, les
asigno el valor de cero, y luego si
no es la primera vez, simplemente agrego uno a
su valor anterior. Por cierto, una confusión podrías estar teniendo
aquí es, espera,
Alex, ¿por qué es que
aquí en la línea 21 22, si es la primera vez que
el registro es un fracaso, que el NM tiene un
récord de fracaso, por qué no decir igual a uno? Y Z O? El motivo es porque
en la línea 23, nosotros ,
independientemente, vamos a
sumar uno al valor, sea o no la primera vez o
sea la segunda vez, así que ni siquiera importa. Espero que entiendas lo que estoy diciendo, bien, porque esto
va a ir. Entonces, si es la primera vez,
bien, antes que nada, el
programa dirá: Bien, tu número de campo de
Ts es cero en la línea 22, y luego en la línea 23, va a agregar
uno independientemente. Por eso asignamos
cero aquí y no uno. Si asignamos uno aquí,
entonces automáticamente, quien haya tenido solo
un intento fallido tendrá ahora dos en
contra de su historial. Y para demostrártelo,
puedes ver ahora mismo Dave solo
tiene un intento fallido de inicio de
sesión, ¿verdad? Si vine aquí
ahora mismo y cambio cero a uno en su lugar y ejecuto
el programa, miren eso. Dave ahora tiene dos
por eso hicimos este 10 primero, porque sabemos que en la línea
23, en el siguiente paso, se agregará
uno al registro de
ese usuario independientemente de si
es o no su primera vez
o su segunda vez. Entonces ojalá entiendas
lo que hicimos ahí. Gracias por mirar,
y por supuesto, los
veo en
la próxima clase.
40. Proyecto del sistema de autenticación: Muy bien, así que bienvenidos
al reto de programación
donde vamos a crear
para nosotros mismos un sistema de
autenticación muy básico Vamos a aplicar
todo lo que hemos aprendido
hasta ahora de variables a funciones, a bucles, y por supuesto, más recientemente diccionarios, ¿bien Ahora, ya he
escrito el programa. Esta es la salida. Entonces la forma en que
va a funcionar el programa es así. Al principio, al
usuario se le presentarán tres opciones
para registrarse, iniciar sesión o simplemente
salir del programa. Ahora, si dicen tres, saldrá inmediatamente
del programa y
terminará todo el sistema de
autenticación. No obstante, si fueran a ir
con uno y presionar Enter, ahora serán X
proporcionar un nombre de usuario. Voy a ir con
John, déjame proporcionar mi contraseña como contraseña,
y ahí tienes. La inscripción será exitosa. Ahora bien, si tuviera que ir
a escribir uno de nuevo, e intenté usar
exactamente el mismo nombre de usuario John para crear una nueva cuenta, el sistema comprobará
para ver eso, Oh,
John ya existe, prueba con
un nombre de usuario diferente. Entonces nuestro programa
va a comprobar para ver si el nombre de usuario
ya existe. Ahora, para el número dos,
si intentamos iniciar sesión, va a
pedir el nombre de usuario. Ahora bien, si digo John, correcto, y luego le proporciono
la contraseña correcta, se puede ver
ahora mismo va a decir login successful.
Bienvenido de nuevo. Ahora bien, si intenté iniciar sesión nuevo con exactamente el
mismo nombre de usuario, John, pero esta vez usé la contraseña
obviamente incorrecta, va a decir nombre de usuario
o contraseña
inválidos , por favor inténtelo de nuevo. Entonces este va a ser nuestro sistema
básico de autenticación. Así va a funcionar. Y lo que quiero hacer
ahora mismo es traer aquí mi archivo del Bloc de Notas solo para que te
den una idea de con
qué vamos a
estar trabajando Entonces, obviamente, vamos a necesitar un diccionario
que almacene las credenciales de usuario porque vamos
a tener que comparar y ver si el nuevo nombre de usuario que el usuario quiere introducir ya ha
sido creado antes, si la contraseña es
correcta, cosas así. Y vamos a estar usando un diccionario porque
tendremos que
crear el par de valores clave, usándolos y ware de contraseña,
usándolos será la clave, y luego el valor de la
clave será la contraseña. Entonces los diccionarios
van a ser útiles aquí. Vamos a necesitar dos funciones
distintas. La primera función
será registrar al usuario, y luego la otra
será iniciar sesión en el usuario. Ahora bien, para que la función real registre
al usuario, ¿
qué necesitamos? En primer lugar,
vamos a tener que
pedirle al usuario que
proporcione el nombre de usuario y luego tendremos que
tener algún tipo de declaración EL que
verificará para ver si el
nombre de usuario ya existe. Si pide
otro nombre de usuario. Sin embargo, si se trata de un nombre de usuario
nuevo, entonces el programa puede proceder
a pedir la contraseña. Una vez que el usuario haya proporcionado
tanto el nombre de usuario como la contraseña, entonces
tendremos que crear el nombre de usuario contraseña
clave valor pay. Te voy a mostrar exactamente
cómo hacer esto. Una vez hecho esto,
podemos decir entonces que el registro ha sido exitoso, así que bastante
sencillo. Para que la función inicie sesión en
el usuario existente, nuevamente, tendremos que pedirle al usuario proporcione el nombre de usuario
y contraseña. Y entonces tendríamos que verificar
para ver si el nombre de usuario coincide con la contraseña que ya se ha
guardado en el diccionario. Si es falso, entonces vamos
a imprimir nombre de
usuario y contraseña inválidos. De lo contrario, si es cierto, si la contraseña y el nombre de
usuario coinciden, entonces podemos decir que el inicio de
sesión es exitoso. Y luego finalmente, la tercera
etapa será la de crear el
sistema de autenticación real donde al usuario se le
presentarán tres opciones para registrarse, iniciar sesión o salir. Y dependiendo de la
opción que elija el usuario, tendríamos que llamar a
la función relevante. Entonces vamos a construir este
sistema de autenticación desde cero. ¿Estás emocionado? Espero que lo estés. Vamos a saltar a la derecha.
41. Paso 1 crea la función de registro: Entonces lo primero que
vamos a hacer será
crear la función que
registrará al usuario. Sin embargo, vamos a crear un diccionario que se
utilizará para almacenar las credenciales de
usuario. Entonces, para el diccionario, podemos llamarlo credenciales de
subrayado de usuario Bien, es igual, y
entonces vamos a tener nuestras llaves Colly. Todo bien. Ahora para que la función real registre
a nuestro usuario, de hecho, permítanme agregar
la nota ahí muy rápido. Función para registrar usuario. Bien. Definamos la función. Voy a ir a
la muerte y luego
digamos registrar usuario de subrayado Llamar a. Ahora, ¿qué necesitamos? En primer lugar,
tenemos que pedirle
al usuario que introduzca el nombre de usuario. Podemos asignarlo
a una variable. Llamemos a la variable nombre de
usuario igual. Ahora vamos a pedirle al usuario que proporcione la entrada del nombre de usuario, y luego podemos decir que
ingrese su nombre de usuario. Bien. Sólo como ejemplo,
presionemos Enter. Déjame dejar algo de espacio
aquí entre los dos puntos y los códigos ahí mismo
para tener algo de espacio adentro. Entonces ahora mismo, necesitamos verificar
para ver si el nombre de usuario que el usuario proporciona
realmente ya existe. Permítanme agregar un nodo
aquí en una línea separada. Agreguemos la nota,
verifiquemos para ver si
ya existe el nombre de usuario. Entonces, ¿cómo vamos a hacer esto? Bueno, podemos hacerlo
usando la instrucción If. Voy a decir si nombre de
usuario y ahora en las credenciales de usuario. Nuevamente, Python ya nos ha
dado el código. Si el nombre de usuario en las
credenciales de usuario, Colón, vamos a imprimir nombre de usuario
ya existe, por favor elija un nombre de usuario
diferente. Creo que esto me gusta.
No obstante, voy a quitar la devolución.
No necesitamos eso. Entonces sin embargo, si el
nombre de usuario no existe, si es un nombre de usuario nuevo, entonces
podemos agregar nuestros s. ¿
Qué más tenemos que hacer ahora? Tenemos que pedirle al
usuario su contraseña. Voy a decir otra cosa. Vamos a crear una
contraseña variable y luego asignarla a las entradas
y luego entre paréntesis, digamos, Ingresa una contraseña. Llama, y luego agreguemos el código de cierre,
y ahí está. partir de aquí ahora mismo, el siguiente paso que
tendremos que hacer es crear el par de valores clave para
nombre de usuario y contraseña. Ahora bien, ¿cómo
vamos a hacer esto? Bueno, vamos a hacerlo
llamando a las credenciales de
usuario del diccionario. Bien. Ahora mira esto. Voy a abrir mis corchetes y voy a proporcionar
la clave que será nombre de
usuario y ahora
es igual a contraseña. Así es como podemos crear
el par de valores clave. Usted proporciona el nombre de su diccionario y luego entre paréntesis, proporciona el nombre de la
clave es igual a su valor, y ahí está justo ahí. Entonces el paso final ahora
será
simplemente imprimir el
registro exitoso. Y ahí está. Ahora,
intentemos algo. Voy a llamar a esta función y
veamos si realmente funciona. Voy a decir registro de usuario, corchetes, dos puntos,
y ahí está. Vamos a probar esto. Así que aquí no necesitamos dos puntos. Pedir disculpas. No necesitamos
dos puntos ahí mismo Vamos a ejecutar el programa. Bien, ingrese use un nombre. Voy a decir John, vamos a introducir una contraseña. Digamos que John
por la contraseña. John, Enter una vez más y dice registro
exitoso. Sin embargo, observe que
el programa ha terminado, y eso es porque no
tenemos un bucle real que se ejecute
continuamente para seguir pidiendo
al usuario que proporcione un nuevo nombre de
usuario, una nueva contraseña. ¿Qué podemos hacer para ejecutar este
programa indefinidamente? Bueno, podemos introducir
el bucle while true. Por aquí, justo debajo de
la función registrar usuario, no
voy a
llamar en un bucle que diga while y luego true. No obstante, la sangría va
a ser muy, muy importante. Voy a tabular
todo esto para
asegurarme de que todo caiga
bajo la salvaje declaración verdadera. Mira, déjame agregar mi columna
ahí mismo, y ahí está, ahora vamos a tener el
programa funcionando continuamente. Comprobemos para ver
si realmente
comprobará si el nombre de usuario que
proporcionamos ya existe. Volvamos a ejecutar el programa
. Todo bien. Entonces esta me voy
a ir con Mark. La contraseña es contraseña.
Bien, bien. Registro exitoso.
Ahora puedes ver que está pidiendo
otro nombre de usuario. Vamos a probar Nancy, Password, vamos con SOD,
Fish. Está funcionando. Ahora, intentemos
usar Mark nuevamente, Enter y ahora dice, nombre de usuario ya existe, por favor elija un nombre de usuario diferente. Impresionante. Podemos ver ahora mismo que la primera
parte de nuestro programa, la que comprueba para ver si la que registra
usuario y comprueba si el nombre de usuario
ya existe, puedes ver ahora mismo
que está funcionando perfectamente bien y
eso es increíble. Únete a mí en el siguiente video donde ahora
vamos a
pasar a la etapa dos, donde vamos a crear la función para iniciar sesión al usuario.
42. Paso 2 Crea la función de inicio de sesión: Bienvenido de nuevo. Ahora
pasemos a la segunda etapa donde vamos a
crear una función dos, iniciar sesión en un usuario existente. Lo que voy a hacer es que
voy a empujar la función aquí todo el camino hasta
el final y afuera, agreguemos unas nuevas notas que diga función dos, inicie sesión el usuario. ¿Qué necesitamos?
Permítanos ante todo, crear el nombre de la
función que será def, digamos, login
subrayado usuario Y agreguemos dos puntos.
¿Qué vamos a necesitar? Vamos a necesitar tanto el
nombre de usuario como la contraseña. Digamos nombre de usuario
es igual y ahora entrada, vamos a pedir
al usuario que proporcione su nombre de usuario. Escriba su nombre de usuario. Colón, vamos a agregar algo de
espacio ahí mismo. Bien, siguiente será la contraseña, voy a decir
contraseña es igual y luego ingresa tu contraseña,
produce sencillo. Vamos a tener que verificar ahora
para ver si el nombre de usuario realmente coincide con la contraseña que
teníamos en la sección de registro. Voy a añadir mi
nota muy rápido. Verifique si el
nombre de usuario y la contraseña coinciden. Entonces, ¿cómo hacemos esto? El bien viejo si
y ahora nombre de usuario credencial de subrayado de usuario lo siento por eso Yo uso un nombre en las credenciales de usuario y debido
a que tanto el nombre de usuario
como la contraseña tienen que ser revisados y las credenciales de subrayado de
usuario
y ahora los corchetes, usar un nombre igual
a la contraseña Mira lo que hicimos aquí,
estamos comprobando para
asegurarnos de que si el nombre de usuario que ya se ha almacenado en el diccionario
credenciales de usuario y ahora
el par de valores clave para el nombre de usuario y contraseña, si realmente coinciden ,
entonces podemos imprimir, voy a decir imprimir
digamos, bienvenido de nuevo. Un muy, muy, muy sencillo. De lo contrario, si no es un
partido, podemos imprimir. Ahora podemos decir, inválido
usando mi contraseña, por favor intente ganar. Todo bien. Ahí está. Bastante
sencillo. Lo que voy a hacer
ahora mismo es que voy a
llamar a ambas
funciones registrar usuario, y luego también iniciar sesión
en el usuario score. Sin embargo, debemos
prestar mucha atención
al hecho de que el bucle reside actualmente dentro de la función de registro. No está afuera. Necesitamos ejecutar nuestro
bucle independientemente de la función de registro
y de la función de inicio de sesión. Lo que voy a hacer es que
voy a
cortar el salvaje verdadero cortarlo, y luego voy a pegarlo afuera solo mientras cierto. No obstante, todo lo demás
debe caer bajo ella. Voy a tablar todo debajo déjame hacer esto
otra vez y ahí tienes Ahí está. Se puede
ver ahora mismo que las credenciales de usuario y luego el bucle wile son independientes
fuera Ahora, el Wil true, todo
el bucle comienza
con registrar al usuario y luego
iniciar sesión en el usuario, verificando para ver si
hay coincidencias, cosas así.
Esto debería funcionar. Voy a seguir adelante
ahora mismo para ejecutar el programa y dejarnos ver. Voy a proporcionar
el primer nombre de usuario. Vamos con Mark y
luego la contraseña
será admin registro exitoso. Ahora intentemos iniciar
sesión como Mark. Voy a decir Mark
y luego admin Lo siento, Mark y luego Admin, y ahí tienes. Bienvenido de nuevo. Funciona con éxito. Ahora se ha vuelto a
la fase de registro. Si intento ahora crear
otra cuenta con Mark, va a decir
que el nombre de
usuario ya existe. Por favor, elija un nombre de usuario
diferente. Vamos con Nancy. Contraseña para Nancy,
vamos con contraseña. Bien, ahora puedes
ver que dice, lo siento, usuario o
contraseña
inválidos, por favor inténtalo de nuevo. La razón por la que esto sucede es porque la forma en
que
se escribe el programa en este momento, simplemente va
paso a paso a paso independientemente de si el
paso anterior fue exitoso o no. Por aquí, se puede
ver que partió con la
fase de registro que funcionó. Luego pasé a la fase de
inicio de sesión que funcionó. Ahora volvió a venir aquí para
la fase de inicio de sesión. Perdón por la fase de
registro otra vez, vi que Mac ya
existe como usuario. Entonces dijo por favor elija
un nombre de usuario diferente. No obstante, sigue pidiendo al usuario que cree
otro sname por aquí, pasó directo a la fase de inicio de sesión donde verifica
para ver si Nancy existía Nancy no existía. Por eso decía no válido nos nombre de contraseña,
por favor inténtalo de nuevo. Ahora mismo, ha vuelto
a la fase de registro. Si vuelvo a decir Nancy, ahora puedes decir que
le está pidiendo
la contraseña a Nancy porque está
en fase de registro. Ahora escribiendo Admin, dice registrarse exitoso. Ahora intentemos iniciar sesión porque Night ha
pasado a la fase de inicio de sesión. Yo digo que la
contraseña de Nancy Nancy es admin, pero voy a escribir
algo diferente, Enter, y luego dice No
válido nos nombre de contraseña, por favor inténtalo de nuevo. Podemos ver ahora mismo que
el programa funciona como 80%. La fase de registro
y la fase de inicio de sesión funcionan, sin embargo, si lo ideal fuera, cuando intentamos
crear una nueva cuenta de usuario, y si estamos tratando de usar un nombre de usuario que ya existe, el programa no debería pasar
a la segunda etapa, que solo para iniciar sesión en el
usuario hasta que el usuario haya proporcionado
realmente un nombre de usuario
nuevo para el registro. Eso lo vamos a arreglar en la tercera y última parte
de esta tarea.
43. Paso 3: creación del sistema de autenticación: Llegaré a la
parte final de nuestra tarea, y eso es crear ahora el sistema de
autenticación real. Eso incitará al
usuario a registrarse, iniciar sesión o tal vez simplemente
incluso salir del sistema. Ahora, lo que voy
a hacer, en primer lugar, es que voy a
quitar las funciones aquí dentro, registrarme e iniciar sesión. También voy a quitar el bucle while
aquí mismo porque vamos a ejecutar eso en una ubicación
diferente. Ahora voy a cambiar
la sangría y
asegurarme de que las funciones registren usuario y usuario de inicio de sesión
en la misma línea Esto aquí mismo debería estar bajo la
función Iniciar sesión usuario y ahí está. Empecemos por crear
el sistema de autenticación. Voy a agregar
mis notas y llamar a ésta el menú principal. Ahora podemos definir nuestra función aquí, sistema de
subrayado de autenticación Y ahí está. ¿Qué necesitamos aquí? Necesitamos solicitar
al usuario que se
registre, inicie sesión o salga. Vamos a imprimir
un par de declaraciones. Empecemos por
imprimir y voy a decir,
digamos sistema básico de
autoría. Esto estará en lo más alto. Luego, vamos a imprimir la primera
opción para el usuario. Podemos decir que un registro será la primera opción y luego
imprimir la opción número dos, este será el inicio de sesión de dos puntos. Entonces la opción
final aquí sería tres y luego llamemos a
esa salida. Ahí está. Aquí tenemos nuestras tres
opciones. Ahora, el usuario tendrá que
agregar uno, dos o tres. Vamos a crear una
variable que represente esa opción
en particular. Voy a llamar a
esta opción,
opción va a
ser igual a input, y ahora vamos a pedirle al
usuario que ingrese su elección. Le estamos preguntando al
usuario en este momento, Oye, proporciónanos lo
que quieres hacer. Vamos a tener que
crear el escenario if donde comprobaremos si
el usuario elige la Opción uno, que es registrarse, podemos llamar a la función registrar usuario. Si eligen la opción dos, podemos llamar a la
función de usuario de inicio de sesión o si salen, simplemente
podemos terminar el bucle. Voy a decir ahora mismo que si opción aquí es igual, y ahora puedo decir una. Colón. ¿Qué hacemos si
esta opción de quesos uno Bueno, podemos llamar a la función
registrar subrayado usuario. Muy, muy directo. Ahora bien, si que va a ser si. Si era la opción dos,
¿qué vamos a hacer? Vamos a llamar a la
función login underscore user. Ahora para la última, si la opción equivale a tres, ¿qué hacemos? Podemos imprimir. Entonces código, podemos decir
saliendo del sistema. Y ahí está, y entonces podemos decir otra cosa si el usuario tal vez proporciona la
opción cuatro, cinco, seis, que no existen,
entonces podemos decir, de
lo contrario, imprimir y
luego entre paréntesis, podemos decir elección inválida,
y luego podemos decir, por favor elija entre las opciones
uno, dos o tres. Ahí está. Ahí está. Ahora por fin, podemos ejecutar el sistema de autenticación
podemos hacer esto simplemente diciendo sistema de
autenticación, y ahí está. Hay una cosa que
aún no hemos agregado. No sé si
puedes detectar lo que es, pero ese es el bucle. Porque en este momento tal como es, este programa se ejecutará solo una vez, pero queremos que el usuario
siga
iniciando sesión o registrándose o saliendo ¿Qué hacemos? Aquí es donde tendremos que llamar a in
the Wild true loop. Pero, ¿dónde crees que lo
vamos a poner? Vamos a ponerlo justo debajo de la función de nuestro
sistema de autenticación. Aquí es donde voy
a decir salvaje verdad. Ahora recuerden, todo
aquí dentro tendrá que caer bajo la salvaje declaración
verdadera. Así que asegúrate de que tu
identación sea correcta, y luego vamos
a tener que agregar la sentencia break
también para terminar el bucle Ahora bien, donde vamos
a terminar el bucle terminamos el bucle donde el usuario
elige la opción tres, que es salir del sistema. Justo debajo de
aquí, debajo de la impresión, voy a decir break y ahí está nuestro programa ojalá funcione
sin ningún problema. Déjame seguir adelante
ahora mismo y ejecutarlo. Nosotros sí tenemos un problema
aquí mismo y eso porque el break está fuera
del bucle y mira eso. Oh, guau, la sangría
es tan importante. Se puede ver
ahora mismo que si todo esto no es la misma sangría que la
sentencia while Entonces, volvamos por aquí y sanguémoslos
adecuadamente y ahí está Se puede ver incluso,
cometo errores con mi
sangría también Entonces, asegurémonos de que todo lo demás
esté sangrado correctamente Intentemos ejecutar el
programa una vez más. Agradecidamente, ahora funciona. Déjanos probarlo. Voy a ir con la
opción número uno. En primer lugar, vamos a registrar Mark y su contraseña es admin. Impresionante. Ahora intentemos
ir a la opción número dos para iniciar sesión, usa el nombre. Probemos Nancy como ejemplo, contraseña, digamos, Bob. Pero ahora dice nombre no válido,
usando el nombre de la contraseña,
por favor inténtelo de nuevo. Obviamente está
funcionando muy bien. Intentemos nuevamente
registrarnos esta vez como Marcar una vez más verificar para ver si el programa detectará
que Mark ya existe, entonces Mark y dice, Bien, nombre ya existe, por favor
elija un nombre de usuario diferente. Bien. Intentemos iniciar sesión
en este tiempo como Mark. Vamos a proporcionar la contraseña
que es admin y dice, bienvenido de nuevo. De hecho, trabajé. Intentemos iniciar sesión de nuevo como Mark. Pero esta vez, usemos una contraseña diferente,
una contraseña larga
y luego dice: Nombre de usuario
inválido de la
contraseña, por favor inténtelo de nuevo. Parece que está
funcionando correctamente. La prueba final es salir, entrar, y ahí vas. Al salir del sistema,
el bucle ha terminado, el programa ha
terminado. Ahí está. Hemos
creado con éxito un programa, que es un
sistema básico de autenticación que
permitiría a un usuario registrar el inicio de sesión o simplemente
salir del programa. Por supuesto, hemos agregado
cheques para garantizar que no se
puedan registrar cuentas duplicadas. También hemos agregado
comprobaciones para garantizar que los nombres de usuario y
las contraseñas coincidan, y ahí está. Enhorabuena. Espero que hayan disfrutado de esta tarea, de
este reto. Gracias por ver. Te
veo en la siguiente clase.
44. Introducción a la sección de manejo de archivos: Bienvenido a esta sección
donde vamos a estar hablando de manejo de archivos, y lo creas o no, este es oficialmente
el comienzo de los temas más avanzados sobre la programación Python
porque aquí, vas a aprender cómo
puedes escribir programas que puedan crear archivos
e incluso modificarlos. Y quizás aún
más importante, vas a aprender exactamente
cómo manejar los errores de archivo. Entonces digamos, por ejemplo, algo
sucedió en tu programa, no
funcionó del todo de la manera que estaba destinado a funcionar. Vas a aprender
exactamente cómo puedes modificar o diseñar tu
programa de tal manera que este tipo de errores se manejen de manera
profesional. Entonces esta va a ser una sección muy,
muy interesante. Y, por supuesto, también
vas a aprender los diferentes tipos de métodos que podemos
aplicar a nuestros archivos, como por
ejemplo cómo puedes
leer desde un archivo, o tal vez incluso escribir en un archivo o tal vez incluso anexar o
modificar un archivo en particular Y claro,
también vas a aprender sobre el manejo de los
errores de archivo de los que ya he
hablado usando los
múltiples bloques except y también la
sentencia finally también. Entonces,
sin perder más tiempo, saltemos a
hablar de manejo de archivos.
45. Lectura y escritura en archivos: Bien
hablemos del manejo de archivos y ahora mismo como es, el único archivo con el que hemos
estado trabajando es el archivo principal dot py. Es solo un
archivo Python y nada más. Sin embargo, podríamos crear
otro tipo de archivos. Y si quisiéramos escribir
un programa que
le pidiera al usuario que proporcionara
su nombre de usuario o contraseña, y luego almacenamos
esa información de usuario en un archivo separado. ¿Cómo podemos hacer eso?
Bueno, podemos hacerlo de diversas maneras. Eso es lo que
vas a aprender aquí. Lo primero que
quiero mostrarte es cómo crear un archivo. Hay una declaración
llamada con y luego una función llamada corchetes abiertos. Lo que esto hará es que la función open normalmente
acepta dos parámetros. Tendrás que
proporcionar el nombre del archivo con
el que
quieres trabajar, y luego el segundo
parámetro
será lo que sea que
quieras hacerle a ese archivo. Tal vez quieras
leer el archivo, escribir en el archivo, anexar
el archivo, y así sucesivamente Como ejemplo, permítanme decir, quiero abrir un archivo
llamado ejemplo punto TXT. Es un archivo de texto ahora coma, y ahora tengo que
proporcionar la operación ¿Quiero abrir este archivo? ¿Quiero leer el contenido del archivo?
¿Qué quiero hacer? Quiero escribir en el archivo, así que voy a usar W para representar la función correcta,
la operación correcta. Y ahora para terminar esto, voy a decir un expediente. Esto de aquí, esta
suele ser la sintaxis. Usted dirá con open y luego entre paréntesis proporcione
el nombre del archivo, y luego el operador
relaciona W para escritura, R para lectura, y así sucesivamente
y luego decir un archivo. Ahora voy a
saltar a la nueva línea y decir archivo punto w Esta va a ser la función que vamos a usar para escribir
realmente la cadena o lo que sea que
queramos escribir en el archivo. Entre paréntesis, voy
a decir hola mundo. Esto es lo que quiero
escribir en el expediente. Ahora, mira esto. Voy a seguir
adelante. Ahora fíjate hasta el momento todavía tengo un solo
archivo, el punto principal PY. Pero si yo fuera a ejecutar el programa, ya
ves que dice ejemplo punto. Aunque no tenía
este archivo creado antes, siempre que estés
escribiendo en un archivo, si ese archivo no ha
existido antes, entonces Python
creará automáticamente ese archivo por ti. Ahora bien, si tuviera que
abrir mi ejemplo al texto, se
puede ver ahora mismo
que dice hola mundo. Y si vengo por aquí
ahora mismo y escribo otra función correcta y
digo, esto es increíble. ¿Qué crees que
va a pasar? Sigamos adelante y
ejecutemos el programa. Si vuelvo a mi
ejemplo, doc TXT, ahora puedes ver que dice hola
mundo, esto es increíble. Ahora ha agregado esto
es increíble a nuestro archivo. Déjame regresar y cerrar esto. Déjame quitar la
segunda función de archivo. Ahora, podemos ver que hola mundo es de hecho
en ejemplo punto TXT. Pero y si en nuestra consola, quisiéramos mostrar el
contenido del ejemplo punto TXT. Lo que voy a hacer aquí es
decir con abierto nuevo y ahora entre paréntesis, una vez más, el nombre
del archivo, ejemplo TXT. Ahora vamos a usar
la función R en su lugar. Esto es lo que usamos
para leer el archivo. Voy a decir como archivo, dos puntos. Ahora bien, ¿y si quisiéramos imprimir el
contenido del archivo? Puedo asignar una variable
llamada content equals, y ahora voy a usar
un archivo de función punto Rojo. Esta función
aquí mismo archivo punto rojo leemos el contenido
de nuestro archivo. Va a pasar los contenidos
al contenido variable. Ahora todo lo que tenemos que hacer a partir de aquí será simplemente decir impresiones
y luego entre paréntesis, qué estamos imprimiendo,
estamos imprimiendo contenido. Bien. Ahora voy a correr y ahí está justo
aquí en una consola, puede ver que tenemos hola
mundo que se está mostrando. Esto es básicamente
una introducción a la lectura de archivos,
escritura a archivos. Una pregunta que
puede tener es, bien, ¿ podemos realmente crear nuestros archivos sin usar
la declaración with? La respuesta de hecho es sí, podemos hacerlo sin
usar la declaración with. ¿Cómo haríamos esto? Bueno, permítanme solo
antes que nada,
quiten la programación aquí. Lo que tenemos que
hacer, en primer lugar, es decir archivo es igual,
y luego abrir. Esta va a ser la función abierta
propiamente dicha. Recuerda que open
acepta dos parámetros. Ahora tendremos que
abrir nuestro ejemplo punto TXT, ahora lo que queremos hacer
queremos escribir en el archivo. Voy a decir W. Déjame simplemente eliminar déjame eliminar este ejemplo de
archivo de texto punto. Déjame borrarlo. Estamos empezando desde
el cero. Ahora, le he dicho a Python, quiero que creen este
archivo llamado ejemplo punto TXT. ¿Qué queremos
escribir ahora en el archivo? Voy a entrar
ahora mismo y decir archivo punto escribir. Porque ahora estoy escribiendo en el archivo y luego entre paréntesis, vamos a proporcionar la
cadena hola mundo. Ahora lo que voy a tener que hacer es que voy
a tener que cerrar el archivo. Cuando estás abriendo un archivo o estás leyendo en un archivo
o estás en un archivo, por defecto, el archivo necesita ser abierto para que ocurra esa
operación. Lo que siempre quieres hacer es
asegurarte de que el archivo esté cerrado una vez finalizada la
operación. Si no haces esto, esto puede llevar a que programas filtren memoria y puede ser muy vulnerable a
diferentes tipos de ataques Entonces para cerrar el
archivo de manera muy simple, archivo punto W punto cerrar.
Y eso es todo. Ahora bien, si vuelvo a ejecutar el programa, puedes decir ejemplo que el
texto está por ahí, puedo abrir el archivo y
es justo el hola mundo. La razón por la que preferimos o la
mayoría de los desarrolladores prefieren usar la declaración W es porque
con la declaración With, permítanme deshacer todo esto. Con la declaración W, notará que
en realidad no tuvimos que cerrar
el archivo manualmente. Python es
lo suficientemente inteligente como para saber que, cuando estés usando
la instrucción W, cuanto hayas realizado cualquier operación que sea la que quieras
realizar en el archivo,
ciérrela automáticamente. Es por eso que los desarrolladores suelen
utilizar la declaración with. Ya no tienes que
cerrar el archivo porque Python lo
hará automáticamente. Además, también es más limpio, tienes menos líneas de código. Es por eso que la instrucción
Wi se usa típicamente junto con
la función open. Gracias por ver. Te
veo en la siguiente clase.
46. Lectura y escritura de entradas en archivos de texto: Hablemos ahora de
cómo podemos leer y escribir en archivos
de texto. Digamos, por ejemplo, que
queríamos crear un programa que aceptara
una entrada del usuario. Digamos que
se le ha pedido al usuario que proporcione su nombre de usuario y
luego queremos
almacenar ese nombre de usuario
en un archivo separado. ¿Cómo podemos hacer esto? ¿Bien?
Lo primero es, asignemos una variable que aceptará la
entrada del usuario. Voy a llamar a mi
variable username equals y ahora la función
input. Ahora ingresa tu nombre de usuario,
bastante sencillo. Ahora recuerda de la
lección anterior con Sintaxis abierta, voy a decir con y
ahora abierta y por supuesto, recuerda abierta
aceptará dos parámetros. En primer lugar, el archivo con el que
quieres trabajar y
luego el operador, voy a crear un archivo
llamado users dot txt. Y luego vamos a agregar la idea funcional W para escribir y luego
voy a decir un archivo. Ahora, ¿qué queremos hacer? Queremos escribir el
nombre de usuario al archivo. Lo que voy a hacer ahora mismo es muy sencillo archivo punto, escribir. Ahora entre paréntesis, nombre de usuario. Entonces solo por si acaso, podemos imprimir algo después de que el usuario haya
proporcionado el nombre de usuario. Digamos imprimir y
diré que se ha
agregado nombre de usuario al archivo, solo como ejemplo.
Sigamos ahora mismo. Ejecute el programa. Ingresa tu nombre de usuario,
voy a decir Alex, presiona Enter y ahora dice
nombre de usuario se ha agregado
al archivo y puedes ver a los usuarios TextiFle ha sido creado
y si lo abro, puedes ver que está ahí mismo
Alex. Hasta el momento tan bueno. No obstante, si vuelvo y
vuelvo a ejecutar el programa, y esta vez, usé
un nombre de usuario diferente, dije Alice, presiono Enter. Si voy a mis usuarios
o envío un mensaje de texto al archivo, se
puede ver ahora mismo que
Alice ha sobrescrito a Alex Eso es porque cada vez que aceptas entradas
de tus usuarios, estás almacenando
en un archivo de texto. Cuando usas el operador correcto, simplemente
sobrescribirá lo que
sea que haya existido en
ese archivo anteriormente ¿Y si no queremos esto? ¿Y si solo queremos seguir agregando archivos o nombres de usuario a nuestro archivo sin sobrescribir los anteriores?
¿Cómo hacemos esto? En primer lugar, déjame
borrar mi historial, eliminar a nuestros usuarios
puntear texto el archivo. ¿Vamos a fingir que estamos
empezando de cero? En lugar de usar la función W, voy a usar A, que representa una pluma. Con un bolígrafo, podemos seguir
pidiendo al usuario que proporcione un nuevo nombre de usuario y una vez que sigan
agregando nuevos nombres de usuario, se
almacenarán
en nuestro archivo y los nombres de usuario anteriores no se
sobrescribirán Voy a ejecutar
el programa otra vez. Proporcionar mi nombre de usuario, Alex. Ahora puedes ver que tenemos a
nuestros usuarios dot txt file, Alex, al igual que hicimos
con el operador adecuado. Pero ahora si vuelvo, vuelvo a ejecutar el programa y
esta vez, digo Ale. Lo que ahora pasa, voy a mi usuario punto textifle
y luego vas tú, tenemos a Alex, tenemos Se ve que Alex
no fue sobrescrito. Por cierto, si querías almacenar tus nombres de usuario
en líneas separadas, todo lo que tenemos que hacer aquí mismo es estamos escribiendo el nombre de usuario del archivo Solo podemos decir más
ahora mira esto. Quieres decir slash forward, lo
siento, slash hacia atrás
y luego N. Así que esto de aquí mismo,
esto es lo que usamos
para crear líneas, lo que sea que estés agregando
se agregará a una nueva Entonces lo que voy a
hacer aquí es que
eliminemos nuevamente a los usuarios
dotExifle Déjame ejecutar el programa
una vez más. Alex, presiona Enter. Volvamos a ejecutar el programa. Esta vez, voy a
decir Alice. Pulse Intro. Ahora si abro mis
usuarios hacen TextiFle, ahora se puede ver que Alex y
Alice están en Esto justo aquí es la
diferencia entre su operador correcto y
su operador append Pero, ¿y si
quisiéramos leer los datos, los nombres de usuario del archivo? ¿Cómo podemos hacer esto? Bueno, yo sólo voy
a bajar aquí, digamos con abierto otra vez, brackets, y voy
a decir usuarios TXT, entonces ¿qué
vamos a hacer? Códigos R. Entonces como archivo, Colm ahora
queremos crear un bucle de cuatro. Voy a decir cuatro
nombre por nombre en archivo. Para los nombres de usuario
para los nombres en el archivo, ¿qué queremos hacer? Queremos imprimir. Voy a decir imprimir y
luego podemos decir, usar un nombre. Colon y ahora voy a agregar coma y ahora nombre tira de puntos. Esta es una función nueva
y va a tener sus propios corchetes vacíos
y ahí está. Ahora bien, si ejecuto el programa, Alex, y ahí tienes,
úsalos como
agregarlos al archivo. Ahora por nuestra
función por aquí, estamos leyendo el archivo, va a decir nombre de usuario,
Alex, nombre de usuario Alice,
y luego nombre de usuario Alex
otra vez porque el usuario TextiFle tiene Alex Alice Alex Es así como podemos leer
el contenido de nuestro archivo. Por cierto, la
tira de puntos aquí mismo, este es un método que se usa muy a menudo siempre que
estamos manejando archivos. Ahora, lo usamos para eliminar cualquier carácter de
espacio en blanco inicial o trilling una cadena Esto puede incluir cosas
como tus espacios,
puñaladas o incluso un nuevo carácter de
línea Es solo una
forma muy eficiente de asegurar que sea cual sea el texto que estemos
emitiendo o imprimiendo, sea de la manera más
eficiente sin ningún espacio innecesario Es por eso que el strip se
usa muy a menudo cuando estamos
manejando archivos de texto. Ahora, es completamente opcional. No tienes que usar el método de la
tira, de hecho. Si quito el método de la tira y acabo de cerrar mi
corchete normalmente, si ejecuto el programa, funcionará exactamente de la misma manera. Permítame darle un nuevo nombre. Digamos Mandy. Como ejemplo. Ahí vas. Tenemos nombre de usuario
Alice, sname Alex, nombre Mandy ahí está, todavía
va a funcionar Pero puedes ver
ahora mismo que sí
tenemos el espacio extra, las líneas entre sname
Ale, nombre de usuario Alex, usa nombre Mandy porque estamos usando el nuevo carácter de línea, la nueva cadena de línea aquí para agregar cada entrada en
una línea separada Eso
es más o menos para leer y escribir en archivos de texto. Gracias por ver. Te
veré en la siguiente clase.
47. Métodos de lectura y escritura: Bueno, vuelve. Ahora,
antes de seguir adelante, quería hacerle
saber que existen diferentes métodos para escribir
y leer nuestros archivos. Ahora, hasta ahora, hemos estado tratando
con el método file dot, que es, por supuesto,
muy sencillo. Entonces si ejecuto el
programa ahora mismo, va a crear
mi ejemplo dot THD Lo abro y
ahí está Hello World. Ahora, la escritura de punto de archivo es útil y
se usa cada vez que
escribimos cadenas individuales o muy
simples en nuestro archivo. Hola mundo es muy
sencillo, es muy sencillo. Pero y si quisiéramos
escribir múltiples cadenas o queremos escribir
grandes cantidades de texto. Ya no se utilizará la escritura de archivos. Tendremos que usar un método
diferente. Como ejemplo, si
tuviera una lista de nombres, permítame crear mis nombres de lista. Déjame agregar el primer nombre, Alex y déjame agregar el
nuevo carácter de línea, slash déjame permitir que Python
agregue los nombres restantes Tenemos a Alex, Bob, Caroline, Dave y Fred. Si quisiera escribir
estas cadenas, ya no
puedo usar file voy a tener que usar
un método diferente. Lo que voy a hacer
ahora mismo es que voy a ir con el ancho habitual, abrir, y luego corchetes
y luego recordar, vamos a tener que abrir
nuestro archivo ejemplo punto CxT luego W por supuesto dos, escribir tenemos nuestros dos puntos
y luego voy a decir, perdón, como archivo y
luego nuestro colon Ahora puedes ver archivo punto
líneas a la derecha y luego nuestros nombres. Escribe el archivo punto escribir líneas, esto se usa siempre que
estemos escribiendo varias cadenas o
escribimos grandes trozos
de texto en nuestro archivo. Si ejecuto un programa ahora mismo, y lo abro entonces te vas, tenemos los nombres ahí mismo. Por favor, tenga en cuenta esto. En el futuro, si
vas a crear
programas avanzados que
requerirán escribir grandes cantidades de texto o cadenas
en un archivo en particular, quieres ir con
las
líneas de escritura de archivo en lugar de la escritura
habitual de punto de archivo. Al igual que con la escritura, también
tenemos diferentes
métodos de lectura. Ahora, hasta ahora, hemos
estado usando el muy simple leer el archivo punto leer déjame copiar
algo de código aquí. Déjame pasar esto
aquí muy rápido. Hasta ahora hemos estado tratando
con código así. Tendremos archivo y luego
diremos contenido e llama archivo
punto leído y ahí está. Si tengo un programa
ahora mismo, muy, muy sencillo, tenemos a Alex Bob, Caroline, Dave y Fred. Bien. Lo que pasa con usar file dot RED es que va a leer todo
el archivo a la vez, lo cual es genial siempre estés trabajando con archivos
muy pequeños. Sin embargo, si estás
tratando con archivos grandes
, seguirá funcionando.
No me malinterpretes. Seguiré trabajando, todavía
va a leer todo. Sin embargo, el problema
es que debido a que va a leer
todo el archivo a la vez, tendrá
que usar
mucha memoria
para poder cargar todo el texto
de ese archivo a la vez. Ese es el problema.
No es muy eficiente
cuando se trata grandes cantidades de texto en
un archivo como archivos grandes. Quieres usar un método
diferente. Ahora, déjame mostrarte. Voy a crear
un nuevo programa aquí
mismo y decir con open. Ahora supongamos
ese ejemplo TXT, en este escenario tiene
grandes cantidades de texto, es un archivo muy grande. Voy a ir a
declarar la salida habitual, agregar nuestro nombre de archivo y luego
R y luego decir un archivo Ahora, mira esto. Voy a decir que la línea es igual a la línea lectura de punto de
archivo.
Observe la diferencia. Ya no es archivo leído, ahora
es archivo punto leer línea, y luego puedo crear mi
bucle y decir línea while. Mientras nuestro archivo está abierto,
tiene texto en él. Queremos imprimir la línea. También podemos decir entonces la línea
es igual a la línea de lectura de punto de archivo. Y aquí está. Si tuviera que volver
a ejecutar el programa, verán
ahora mismo que tenemos casi
exactamente las mismas salidas. Realmente no vas a notar la diferencia
porque estamos tratando con un
archivo pequeño independientemente. Sin embargo, por favor, tenga
en cuenta en el futuro, igual que con el método correcto, si va a
estar tratando con grandes cantidades de archivos de los que
necesita leer, desea usar la línea de lectura de puntos. Si se trata de un archivo muy pequeño, se usaría
archivo punto Read. Es ideal para esos escenarios. Sin embargo, no hemos terminado. Hay otro método que
es el archivo punto leer líneas. Lo que esto hace
es que va a leer todas las líneas a la vez y las
devolveremos como una lista de cadenas donde cada elemento es una
línea del archivo. En otras palabras,
combina los beneficios
tanto de su lectura como de su línea de lectura al leer todo
el archivo a la vez, al igual que la lectura de puntos del archivo. Sin embargo, va
a almacenar cada línea como un elemento individual en una lista. Entonces déjame darte un ejemplo. Voy a volver aquí. Voy a modificar esto para
cambiar la línea dos líneas. Es igual a líneas de lectura de puntos de archivo. Ahora en lugar de
usar el bucle Wil, voy a cambiar esto
al bucle cuatro. Voy a decir
cuatro líneas en líneas, dos puntos, y ahora podemos simplemente
imprimir entre corchetes línea. O mejor aún,
agreguemos el método strip para eliminar cualquier espaciado
innecesario. Ahí está ahora mismo, si yo fuera a ejecutar el programa,
ahí tienes. Alex, Bob, Caroline,
Dave y Fred. Nuevamente, no
vas a notar la diferencia cuando estás tratando con un archivo muy pequeño. Una vez más, ten en cuenta que si estás tratando
con archivos grandes, quieres ir con
la línea de lectura o las líneas de lectura. El último método que
quiero mostrarles va a ser el
for line in file. El propósito aquí es leer el archivo línea por línea de
una manera eficiente en memoria. Voy a volver aquí. Déjame quitar las líneas. Tenemos con ejemplo abierto
punto TXT, archivo RS. Ahora voy a decir por línea
en, podría decir archivo, Para línea en archivo, ahora simplemente imprimir línea tira de puntos y nunca para ejecutar el
programa, ahí tienes. Este enfoque es
en realidad muy similar al uso de tu línea de lectura, pero en realidad es más
conciso y se considera la mejor práctica para leer archivos
grandes porque cada iteración recupera
una sola línea, por lo que el uso de memoria
va a ser bajo Para resumir, si
quieres leer de un pequeño archivo, la lectura habitual de nuestro archivo
será la mejor Si estás leyendo
de un archivo grande, puedes ir con
tu línea en archivo. Es mejor que tu línea de lectura de puntos de
archivo, y también mejor que tus líneas de lectura de puntos de
archivo. Ahora, también solo quiero
señalar que además los modos para tu modo de lectura, tu
modo de anexar,
tu modo de escritura, también tenemos modos
adicionales como
tu modo de lectura y escritura,
tu modo de escritura y lectura, así
como tu modo append y read Como ejemplo,
en lugar de R aquí, puedo decir R y luego más. Todo esto se conoce como
el modo de lectura y escritura. Esto va a abrir un expediente tanto
para lectura como para escritura. Sin embargo, tenga en cuenta
que el archivo debe existir y el contenido puede
ser leído y modificado. Tu archivo ya debe existir para que puedas
usar este modo en particular. También tenemos el modo
escribir y leer, que va a
ser W y luego plus. Esto de aquí mismo abrirá
un archivo para lectura y escritura pero iba a
reemplazar cualquier contenido existente. Entonces finalmente, por supuesto,
tienes tu modo Append plus,
que es el modo de lectura append Esto abrirá un archivo
para lectura y escritura, añadiendo nuevo contenido al final sin cambiar ningún contenido
existente Eres más que bienvenido a
jugar con estos modos y ver cómo modifican tu
archivo. Gracias por ver. Te voy a ver
en la siguiente clase.
48. Manejo de errores de archivos: A medida que continúas avanzando
en tu recorrido como programador Python o como
programador en general, hay un hábito
que quiero que adoptes y este hábito va a implicar escribir programas
o diseñar programas que sean capaces de manejar
errores potenciales de manera agraciada Ver la cosa es que, la mayoría de
los programadores por ahí, crean todos
estos grandes programas que pueden hacer esto, hacer eso No obstante, si algo
sale mal, tal vez el usuario del
programa agregó algún tipo
de entrada o tal vez
usaron números en lugar de letras
o algo así. Muchas veces estos programas terminan chocando porque el programador no
ha diseñado el programa de
tal manera que si se producen tales errores
potenciales, el programa
sabe manejarlo Hemos hablado de manejar los errores brevemente cuando
hablamos de loops, pero ahora vamos a
ir un poco más a fondo. En mi pantalla ahora mismo, tengo un programa muy sencillo
que lee el archivo, el ejemplo punto TXT. Pero tenga en cuenta, sin embargo,
que este programa, el bloque corto de código, se basa en este archivo, ejemplo punto TXT
realmente existente. Y si tal vez cometí un error o el uso
del programa el uso del
programa, cometí un error. En lugar de ejemplo punto TXT, tenemos ejemplo punto TXT. Ahora bien, este archivo no existe. No está en mi directorio. Si ejecuto el programa, ahora puedes ver
que tenemos un error. Python nos está diciendo
que, oye, lo siento, no hay tal archivo o directorio, archivo no encontrado error.
Esto no se ve bien. Queremos escribir nuestros
programas de tal manera que si se produce tal
error, lo va a manejar de
una manera muy grácil y
profesional Lo que queremos hacer ahora mismo es dejarme volver aquí y añadir ejemplo punto TXT. Vamos a usar
el bloque Try except. Hemos hablado de esto
cuando hablamos de loops, pero volvamos a hablar de ello. Lo que quieres hacer es
en el bloque de código donde existe la posibilidad
de que ocurra el error, como por aquí, una cosa que quieres
hacer es querer empezar diciendo try. Intente y ahora
asegúrese de que esté sangrada correctamente porque el código
después de try debería estar debajo de él. Ahora estamos diciendo, Bien, intente
abrir este archivo ejemplo punto THD Si existe y todo eso, puedes imprimir el
contenido del archivo. No obstante, ¿y si el
archivo no existe? Ahora podemos decir excepto
y luego bajo excepto, podemos decir print, y luego podemos decir algo
así como archivo no encontrado. Vamos a agregar una columna ahí mismo
para excepto. Ahí está. Básicamente, estamos diciendo, Oye, intenta ejecutar este bloque de código si por una
razón u otra, el archivo y simplemente no se encuentra el archivo de
impresión Si ejecuto el programa ahora mismo, todo funciona correctamente
porque el archivo sí existe. No obstante, si cambio el nombre
del archivo y ejecuto el programa, se
puede ver muy
profesionalmente simplemente
dice archivo no encontrado. Eso es porque estamos usando
el try except block. Si bien esto funciona
bien, para profundizar, quiero que empieces a
usar lo que
llamamos las excepciones comunes
relacionadas con el archivo. Hay una gran variedad de ellos. Python tiene excepciones específicas para muchos de los errores comunes relacionados con
archivos. El primero y
el más común
es el error del archivo no encontrado, igual que tenemos por aquí. Todo lo que necesitas hacer
es en lugar de
simplemente decir try excepto
donde tienes el except, ahora
puedes escribir
archivo no encontrado error. Esto aquí mismo, le estamos diciendo a
Python que
verifique específicamente para ver si el
error es causado por el hecho de que no se encontró el
archivo. Si
vuelvo a ejecutar mi programa ahora mismo
puedes ver que sigue
funcionando perfectamente bien. Sin embargo, esta es una forma mucho más
limpia y eficiente de manejar el error
porque aquí, estamos
verificando específicamente si el error ocurrió porque
el archivo no existe. El try except block por
sí solo maneja todos los errores. Si no
se encontró el archivo ya sea una flecha de permiso o tal vez sea una flecha de directorio o tal vez
sea un error de sistema abierto, se encargará de todo. Entonces sí, va a funcionar bastante bien. Yo me
encargaré de la flecha. Pero nuevamente, una
forma más limpia será
especificar el tipo de error que realmente
estás esperando. Así que tenemos el archivo
no encontrado error. También tenemos el error de
permiso. Tal vez, por ejemplo, el
archivo en cuestión es, sólo
puede ser accedido
por un administrador. Ahora está tratando de ser
accedido por un usuario habitual. Obviamente, vas
a tener el error diciendo:
Oye, perdón, no
tienes permiso. En este escenario, lo
único que hacemos simplemente es decir, ya sabes, lo siento, no
tienes permiso
para ver este archivo, y eso es todo lo que
necesitaríamos hacer. Entonces, si estás esperando
un error de permiso, quieres ir con el bloque de
flecha de
aceptar permiso de código. También tenemos una flecha de directorio. A lo mejor el usuario estaba
intentando abrir un directorio que
no vuelve a existir. Simplemente entra aquí
y luego
escribes es un
error de directorio, y ahí está. Y ahora a partir de aquí, podemos especificar el mensaje exacto de impresión. Entonces en este caso, será algo así como Lo siento. No tienes
permiso para acceder a este directorio o a SOI Este directorio no
existe, algo así. Entonces el último va a ser el error del sistema operativo. Esta suele ser la excepción
general para otros errores relacionados con archivos. A lo mejor el disco está lleno, a lo mejor es un
problema de entrada y salida, algo así. Entonces todo lo que tienes que hacer
ahora mismo es decir excepto, y luego O error. Entonces puedes simplemente escribir
algo así como, perdón, se ha producido
un error
o se ha producido un error
de sistema abierto ,
algo así. Así es exactamente como funcionaría
eso. Una vez más, quieres adoptar
este
enfoque profesional para este
enfoque profesional asegurarte
constantemente de
que tus bloques de código siempre exista la posibilidad
de que ocurra un error, han sido diseñados de
tal manera que
sean capaces de manejar cualquier error potencial
haciendo uso
del try except block y luego para la
declaración accept en sí, puede especificar el error exacto que espera que pueda ocurrir. Gracias por ver. Te
veré en la siguiente clase.
49. Múltiples excepto bloques: Bienvenida de nuevo. En
el video anterior, hablamos del manejo flechas y también de los
diferentes tipos de errores
específicos excepto relacionados con
archivos con los que deberíamos estar trabajando. Sin embargo, ¿y si quisiéramos verificar varios
tipos de errores? Tal vez además de que no se encuentre el
archivo, es posible que el archivo fue encontrado entonces tal vez
los permisos para el archivo no sean correctos o tal vez el directorio no era
correcto, algo así. Queremos crear un programa,
un bloque de código que pueda
manejar múltiples tipos de errores y también imprimir diferentes mensajes de error
para cada error. Como es ahora mismo, tengo
un error que es el archivo no encontrado error y va
a imprimir archivo no encontrado. Pero y si quisiera incluir también el permiso
Al. Es muy, muy sencillo. Todo lo que voy a necesitar
hacer es simplemente abrir otro bloque
y luego solo decir aceptar y luego permiso Al agregar mis dos puntos y ahora puedo imprimir
entre paréntesis y luego decir, perdón, no
tienes el permiso. Para acceder a este archivo.
Eso es todo lo que tengo que hacer. Agreguemos una flecha más, así puedo decir excepto, y luego puedo decir flecha OS. A lo mejor hubo un problema
con el sistema de apertura, y luego puedo mis
dos puntos y luego puedo decir print y luego entre paréntesis, hay una flecha OS. Ahora bien, ¿y si quisiera
agregar un bloque más de código que manejará
cualquier otro tipo potencial de flecha por ahí? Todo lo que necesito hacer es volver
a decir excepto ahora la clave voy
a decir excepción como E. Básicamente, esta línea manejará cualquier otro tipo de error que
pueda ocurrir potencialmente. Entonces simplemente diré
apagar un mensaje general
y decir imprimir, y luego solo diré una flecha
inesperada como ocurrió. Ahora queremos
recalcar la E aquí. Esta E va a
representar la flecha. Lo que voy a hacer
ahora mismo es que voy
a usar la cadena F como de costumbre. Y luego llaves rizadas, voy a agregar
la E ahí mismo La última línea de aquí
manejará cualquier otro tipo de error y el sistema
diría que
se ha producido un error inesperado y luego
especificará qué tipo
de error debido a la variable E de aquí que
creamos aquí y eso es todo. Voy a ejecutar mi programa, y claro, ya ves, va a funcionar
perfectamente bien. Así es como puedes crear
varios bloques excepto que manejarán múltiples tipos
diferentes de errores potenciales
que puedan ocurrir. Para ver.
Te veré en la siguiente clase.
50. La declaración final: A la hora de abrir
archivos con Python, recuerda que
no siempre tenemos que usar la sentencia with. La razón por la que usamos
con la mayor parte del tiempo es porque con sentencia,
automáticamente, el archivo se
cerrará una vez que se
haya accedido a él. En este escenario ahora mismo donde simplemente estamos trabajando con la función
open para abrir el archivo, tenemos que cerrar manualmente el archivo diciendo
archivo que cierra. De lo contrario, el archivo
permanecerá abierto y eso podría
generar posibles errores. La pregunta ahora mismo es,
¿cómo manejaríamos los errores en este escenario en
particular? Bueno, vamos a tener que hacer
uso del bloque finalmente. Ahora, en la parte superior, voy a empezar
con try como de costumbre, y luego recordar,
claro, todo tiene que caer bajo prueba. Ahora en la línea cinco, aquí es donde
vamos a agregar el aceptar. Ahora busquemos el archivo
no encontrado error. Colón. Si no se ha encontrado el archivo, simplemente
podemos imprimir el
archivo no encontrado. No obstante, y si de hecho se encontró el
archivo, no
hay ningún error. Lo que vamos
a hacer ahora mismo es que vamos a decir finalmente. Ahora si archiva, aguanta. Ahora estamos diciendo, finalmente, si no había ningún
mensaje de error, si de hecho se
encontró el archivo, ¿qué hacemos ahora? Simplemente podemos imprimir el contenido y ahora también
podemos cerrar el archivo. De hecho, por si acaso, no es necesario, pero
por si acaso, podemos simplemente imprimir archivo
cerrado, solo como ejemplo. Por supuesto, si ejecuto
el programa ahora mismo, puedes ver que funciona
perfectamente bien e incluso dice archivo cerrado. Este programa en la superficie en
este momento se ve bien. No hubo errores, se encontró
el archivo, lo
imprimió, y por supuesto, el archivo también se ha cerrado. Sin embargo, aún no hemos terminado. Porque de hecho, si
tuviera que
cambiar deliberadamente el nombre del archivo para que sí obtengamos
el archivo no encontrado error, si ejecuto mi programa, Oh, puedes ver ahora mismo, seguimos teniendo la
habitual forma desagradable de mostrar o
manejar errores. Es como que el try except bloque de código
no funcionó en absoluto. ¿Qué está pasando aquí? Otra cosa que debes tener
en cuenta es que si
no estás trabajando con la sentencia
width, no solo tendrías que cerrar
manualmente tu archivo, sino que también tienes que
inicializar el archivo desde
el principio Porque en este momento tal como es, Python ni siquiera
sabe realmente qué es el archivo en sí, ¿cuál es el
valor predeterminado del archivo? Un archivo no es igual al ejemplo que toma si no se encontró
el archivo, ¿cómo lo sabría Python?, en realidad
hay
una flecha aquí, ¿cuál será el valor predeterminado que
necesita tener la variable de archivo? Aquí es donde
tendremos que en la parte superior, digamos archivo equivale a ninguno. Ahora mismo al principio, estamos inicializando
la variable de archivo, estamos asignando al valor
predeterminado de none Esta es una práctica común
cuando se trata recursos que pueden o no
ser asignados con éxito. Usar non here permitiría un
valor predeterminado muy seguro que evitará cualquier operación accidental en
una variable no inicializada Esto es otra cosa que
hay que tener en cuenta. Ahora mismo, si ejecuto el programa una
vez más, funciona bien. Si cambio el nombre del archivo deliberadamente para producir
el mensaje de error, se
puede ver ahora mismo que
manejó el error con gracia Esta es exactamente la razón por la que cuando
se trata de manejar archivos, normalmente
usamos
la
sentencia with porque con la sentencia with, no
tienes que inicializar
tus variables ni tus archivos y
tampoco tienes que
cerrarlos manualmente La sentencia W es tan poderosa, automáticamente inicializará
nuestros archivos y variables
y también cerrará el
archivo automáticamente una vez que se haya accedido a él Pero sin embargo, debes
estar al tanto de esto si te
encuentras escenario o
algún código de programación donde no se utilizó la
sentencia width, ¿cómo manejarías los errores? ¿Cómo cerrarías
el archivo manualmente? Por supuesto, ¿cómo
iniciarías también el archivo manualmente?
Gracias por ver. Te veré en
la siguiente clase.
51. Introducción a la sección de bibliotecas y módulos: Bienvenido a la sección de bibliotecas
y módulos. Y, claro, aquí dentro,
vas a aprender
a trabajar con ellos. ¿Qué son exactamente
las bibliotecas y los módulos? Piense en ellos
básicamente como programas que ya
han sido escritos
por otros desarrolladores de Python. Ten en cuenta que la
comunidad Python es grande. Tienes desarrolladores que han escrito sus propios tipos de código. A lo mejor hay un programador por
ahí que ya ha escrito su propio código sobre
cómo cifrar una contraseña Entonces, en lugar de
tener que escribir un
programa de este tipo desde cero, simplemente
puede importar ese
programa a su propio programa. Y luego modificar para
hacer otra cosa. Entonces ese es
el punto
de trabajar con
bibliotecas y módulos. Entonces en esta sección,
vas a aprender los diferentes tipos de bibliotecas
y módulos que hay, las diferencias entre
bibliotecas y módulos. Y por supuesto,
también vamos a tener diferentes retos y ejercicios de
codificación también. Entonces, sin perder más
tiempo, saltemos de inmediato.
52. Introducción a bibliotecas y módulos: Bienvenido a una nueva sección, y aquí
vamos a estar
hablando de bibliotecas y módulos. Entonces, ¿qué son exactamente estos? Pintemos un escenario, ¿verdad? Y si quisiéramos escribir un programa que
hash texto plano, ¿verdad? Entonces, digamos por ejemplo,
queríamos
almacenar contraseñas en un archivo. Obviamente, nos
gustaría hacerlos hash. No queremos almacenar
contraseñas en texto plano. Entonces, ¿cómo escribiríamos un programa que
hash estas contraseñas? Hay dos opciones, ¿de acuerdo? Podríamos decidir escribir
el programa desde cero, lo que podría llevar mucho
tiempo o muy simplemente, podemos usar algo llamado
módulo que ya tiene el código que necesitamos
para hash nuestro texto. Entonces, un módulo suele ser un archivo Python que
ya contiene código. Podrían ser funciones, variables, clases,
declaraciones, lo que sea, que sirva a un
propósito específico mientras que una biblioteca, como podría haber imaginado ahora, suele ser un grupo empaquetado de estos módulos organizados en
torno a un objetivo más amplio. Entonces se puede pensar en los módulos como funciones
muy específicas que sirven a un propósito muy específico, mientras que una biblioteca sería una
colección de dichos módulos. Como ejemplo, sí tenemos
la fecha y hora punto pi. Se trata de un módulo
que tiene funciones específicamente para caminar
con fechas y horarios. También tenemos una biblioteca llamada
HH Lib, la Biblioteca HH, que sería la
biblioteca que tendríamos que
usar para hash
nuestro texto plano. Ahora bien, ¿qué tenemos
en la biblioteca hash? Tenemos diferentes
tipos de algoritmos. Tenemos el MD cinco, eso va a crear un hash de 128 bits. Tenemos el Shall
one, que va a generar un hash de 160 bits, Shaw 256, que generará el
25, seis y, por supuesto, el Shell cinco y
dos, que
generará un hash de 512 bits. También hay otros
tipos de funciones dentro de esta biblioteca como
el hash leap dot u, que aceptará dos parámetros, datos de
nombre que
luego podremos usar para crear un hash con un nombre de
algoritmo específico. Entonces, en el futuro, las bibliotecas
pueden ser incorporadas. Las llamamos bibliotecas estándar. Esto vendrá por defecto con
tu instalación de Python o también podremos usar bibliotecas
que sean externas. Nos referimos a ellos como terceros. Estas bibliotecas no vienen
con tu instalación de Python, por lo que tendrás que
instalarlas manualmente tú mismo, y son desarrolladas por
la comunidad Python. Entonces, una vez más, los módulos tienen un
código muy específico que sirve función
muy específica
mientras que las bibliotecas
serán una colección
de estos módulos. Otra cosa que quiero que te des cuenta es que dentro de
la comunidad Python, también
puedes escuchar de otro
término llamado paquetes. Los paquetes están
en algún lugar entre módulos y bibliotecas en el sentido de que también
son una
colección de módulos, pero los módulos tienden a estar muy estrechamente relacionados en su propósito. No son tan
amplias como las bibliotecas. Entonces, por ejemplo, puedes
tener tu paquete de correo electrónico y en el paquete de correo, tendrás módulos
como email dot message, tu email dot mime,
tu email dot Utils y mucho más Otra ventaja de
los paquetes es que
pueden permitirnos organizar estos módulos en una estructura
jerárquica mediante uso de carpetas y subcarpetas Así que cada paquete normalmente
contendrá el archivo int PY. Lo que le dice a Python que, Oye, este directorio en particular, no
es una biblioteca. En realidad es un paquete. Así es como podemos ayudar a Python a diferenciar entre el
paquete y la biblioteca. El paquete tendrá un archivo llamado
específicamente
el archivo ini dot py. Entonces eso es todo para bibliotecas,
módulos y paquetes. German Vinexway no
empezaremos a trabajar con ellos.
53. Crear un módulo personalizado: Empezar a trabajar con
los módulos estándar y bibliotecas dentro de Python, quiero que creamos nuestro propio módulo personalizado y luego usemos ese módulo en
uno de nuestros programas, ¿de acuerdo? Entonces este es nuestro archivo
de programa principal aquí, el punto pi principal. Lo que voy a hacer
es crear un nuevo archivo, bien, y luego llamar a este
matemático en el anuncio de puntaje. Punto PY. ¿Bien? Este va a ser el archivo que contendrá
nuestro propio módulo personalizado. Ahora, el módulo que vamos a diseñar será uno
que sea muy sencillo, va a tomar dos números
y luego sumarlos juntos. ¿Bien? Así que recuerda cómo
creamos nuestras funciones personalizadas. Utilizamos la función fine. Y ahora voy a agregar
el nombre de la función, que se sumará en
los números cuadrados, y luego dos variables. Va a tomar dos
números y agregarlos. Podemos usar cualquier letra
para representarlos. Voy a ir con F y V, solo como ejemplo y luego
agregar mi columna al final. Ahora bien, ¿qué quiero que haga
la función? Quiero sumar F y V. Así que
voy a decir devolver el valor de lo que de F
más V. Y ahí está. Ahora tenemos un módulo personalizado
que agregará dos variables, F y V, y luego
giramos el resultado. Bien. Si tuviera que volver a
mi archivo PI principal ahora, y quiero hacer uso de
este módulo que hemos diseñado en el
método ad archivo Pi, lo que voy a hacer
ahora mismo es que voy
a tener que usar la función
llamada Importar. Esta es la función
que ahora necesitamos usar para importar nuestro módulo personalizado. Entonces va a ser
el nombre del archivo, que es matemático en el anuncio de puntaje. ¿Bien? Y ahora,
¿qué tenemos que hacer? Tenemos que proporcionar dos números. ¿Bien? Entonces puedo decir que el
número uno equivale a cinco, y luego el número
dos es igual a siete. ¿Bien? Sólo como ejemplo. Bien. Ahora,
queremos imprimir los resultados de sumar
el
número uno y el número dos. Entonces, oh, por cierto,
perdóname. No debería haber
ningún espacio entre el número uno y el número dos. Perdóname. Ya que
es una variable, ¿de acuerdo? Entonces no hay espacios en los
nombres de las variables, perdóname. Por lo que queremos
imprimir este resultado. Entonces puedo asignar una variable llamada resultado
para que sea igual a qué? Ahora voy a tirar
en el módulo personalizado, que era matemática en
el anuncio de puntuación Bien. Y ahora, punto, ¿cuál
era la función? La función que teníamos en nuestro método Ad file es agregar números de
subrayado. ¿Bien? Así que ahora voy a volver aquí a mi archivo principal y ahora decir añadir números de subrayado Y ahora entre paréntesis,
¿qué estamos agregando? Estamos sumando el número uno y
el número dos. Y ahí está. Todo lo que necesito hacer ahora mismo es simplemente
imprimir los resultados. Diré impresiones, y
luego entre paréntesis, agreguemos un código, y luego
puedo decir que la suma es, y puedo agregar coma y luego simplemente decir
resultado, y ahí está Y ahora si ejecuto el programa, ahí tienes,
dice que la suma es 12. Entonces, para darte un
resumen rápido, en primer lugar, creamos un archivo separado, y notamos, por
cierto que los archivos están en la misma carpeta Bien, eso es muy,
muy importante. Así que creamos un archivo
llamado Mth Underscore ad, y este iba a
ser nuestro módulo personalizado Definimos el nombre
de la función para que sea Añadir números de subrayado Toma dos
variables cualesquiera, F y V,
y luego devolvemos el valor de sumar esas dos variables. Así que volviendo a
nuestro archivo principal ahora, lo primero que
teníamos que
hacer era importar ese módulo personalizado,
que es el anuncio de
subrayado matemático aquí Ahora necesitamos aportar los
valores de nuestras dos variables. No quiero que te
confundas. No pienses eso, Oh, porque
en nuestro módulo personalizado, usamos F y V. Por lo tanto, en el archivo principal, F
debería ser igual a cinco, y luego V debería
ser igual a siete. ¿Por qué estamos usando
el número uno número dos? Siempre hay que tener en cuenta
que estas variables, estos parámetros de aquí, no
representan básicamente nada. Es solo una manera de decirle a la
función de ATLPyn que, Oye, dentro de esta función,
vamos a aceptar dos variables, y luego las vamos
a sumar juntas. Podríamos haber usado
cualquier letra aquí. Podríamos haber usado B, C, Z. Podríamos haber usado X. Podríamos haber usado cualquier cosa.
Podríamos haber usado el número uno. Número dos, usamos cualquier nombre, cualquier cosa para representar
esos parámetros, ¿de acuerdo? Entonces no pienses eso, Oh, cualquiera que sea los parámetros
que especifiques aquí debe ser el mismo
aquí, no, ¿de acuerdo? Todo lo que debería saber Python es que, bien, esta función va
a tomar en dos variables. Va a tomar
dos números y luego agregarlos, ¿de acuerdo? Entonces aquí, dijimos que el
número uno equivale a cinco, el número dos es igual a siete. Y ahora esta es la
parte complicada, ¿de acuerdo? Línea seis. Queremos
imprimir los resultados, así que creé un v llamado result, que ahora sería
igual a primero que nada, el nombre del módulo que
es math dot add y luego dot porque queremos
anexar la función
que creamos La función aquí es
Ad underscd números. Entonces lo agregamos a
matemáticas en el anuncio de puntaje, y ahora entre paréntesis,
simplemente el
número uno, el número dos, y luego lo último es simplemente
imprimir los resultados. Entonces dijimos que la suma es y luego resultado y así es como
llegamos. Entonces enhorabuena. Has escrito tu
primer módulo personalizado, y también has
podido
importarlo y utilizarlo
con éxito . Gracias por
ver el video. Te veré en la siguiente clase.
54. Cómo hacer waking con un módulo estándar: Bienvenida de nuevo. Así que la lección
anterior, creamos con éxito nuestro
propio módulo personalizado, y pudimos importarlo y hacer uso de él en nuestro archivo principal. Pero ahora quiero
mostrarles cómo podemos importar algunas de las bibliotecas
y módulos estándar que
viene con Python. Así que déjame seguir adelante y
eliminar todo este código, y voy a dejar
la palabra clave Import, la función principal,
y el nombre del módulo que vamos a
importar se llama random. Este es un módulo incorporado
dentro de Python que nos
permitiría hacer o
generar números aleatorios a partir de una secuencia De hecho, déjame mostrarte un poco de la
documentación aquí dentro. Puedes ver que Python tiene un módulo incorporado
llamado random. Y lo que pasa con el azar
es que es tan poderoso, tiene tantos métodos
que viene con él. Echa un vistazo al método de
elección. Esto devolverá
un elemento aleatorio de la secuencia dada. Voy a hacer uso de este método en particular para
generar una letra aleatoria. Así que mira esto, ¿de acuerdo? Voy a primero
de todo, crear una variable llamada letras
y luego es igual a dos, y voy a escribir
todas las letras aquí, de la A a la Z, ¿bien? Entonces queremos que nuestro
programa genere una letra aleatoria de esta lista,
bien, a partir de esta secuencia. Entonces, ¿cómo vamos a hacer esto? Bueno, voy a
crear una nueva variable llamada dos aleatorios
llamada Letter, ¿de acuerdo? Y ahora aquí dentro, voy
a decir aleatorio Recuerda, la secuencia, antes que
nada, tendremos que agregar el nombre del módulo o biblioteca, así que es
aleatorio aquí dentro. Y ahora el método, que es elección, va
a ser punto y ahora elección. Y ahora entre paréntesis, letras. Eso es todo lo que tengo que hacer. Y ahora, qué hacemos
imprimimos y puedo decir que la letra aleatoria elegida es. Y luego puedo agregar
mi coma y luego simplemente agregar letra de
subrayado aleatorio Y ahí está. Eso es
todo lo que tenemos que hacer. Entonces ahora si ejecuto el
programa, ahí está. La letra aleatoria
elegida es M. Bien. Intentemos volver a ejecutar
el programa. A lo mejor
elegiremos otra letra que debería. Y ahí tienes. Ahora es C. Otra vez, ahora es A. Una vez más ahora es V.
Se puede ver ahora mismo que realmente funciona. Entonces un rápido recapitulación,
¿qué hicimos? En primer lugar, importamos el módulo estándar
llamado random que tiene una lista de diferentes tipos de métodos que
generarán una letra aleatoria. Entonces lo primero que
hicimos fue que creamos una variable de letras que
contendrá todas las letras
de la A a la Z, y luego asignamos
otra variable llamada letra aleatoria
que ahora
contendrá la letra a real
que se generará. En realidad es una
letra aleatoria que se generó. Y luego dijimos
bin al azar el nombre del módulo y luego agregamos el
método que es punto Choice, y luego entre paréntesis, letras. Y ahora simplemente imprimimos la letra aleatoria que
se eligió en la línea cuatro. Entonces eso es todo, gracias
por ver el video. Te veré en
la siguiente clase.
55. Generación de contraseñas con módulos aleatorios y de cadena: Bueno, vuelve. En
la lección anterior, aprendimos con éxito cómo generar una
letra aleatoria haciendo uso del módulo aleatorio y también el método de elección de
puntos aleatorios. Una pregunta que podrías
tener aquí es, bueno, ¿y si quisiéramos generar múltiples letras
y no solo una? Lo que tenemos que hacer
es antes que nada, cambiar el método de elección
aleatoria de punto a elecciones de puntos
aleatorios
porque ahora es plural. Estamos tratando con
más de una letra. Otra cosa acerca de
las elecciones aleatorias como método de función
es que va a aceptar dos parámetros en lugar de uno. El primero será lo que
llamamos la población, que es básicamente de donde
sacamos las letras. Y entonces el segundo
va a ser el número real de letras que
queremos generar. Entonces en este caso,
ahora mismo, voy a decir K es igual a tres. Todo bien. Y ahora puedo cambiar el
texto impresor de letra a letras y luego cambiar E a
R. Ahora si ejecuto el programa, tenemos KJ, puedo ejecutarlo Tenemos QMW, ¿verdad? Para que puedas tenerlo en mente. Sin embargo, queremos
ir un paso más allá para generar una contraseña aleatoria. Así que ya no sólo estamos
tratando con las letras. Ahora vamos a
combinar letras con mayúsculas y
números y así sucesivamente Y estoy bastante seguro de que ya has visto generadores de contraseñas
aleatorias antes. A lo mejor es en el sitio web donde se te pide que
crees una cuenta. Quieres crear una cuenta, y luego te ofrecen
generar una contraseña para ti, que luego podrás cambiar más tarde. Te voy a mostrar
cómo podemos crear nuestro generador de contraseñas aleatorias, y solo vamos a
usar cinco líneas para hacer esto. De hecho, cuatro líneas,
sólo cuatro líneas, ¿de acuerdo? No me crees.
Échale un vistazo a esto. Entonces, antes que nada, vamos a mantener el
Import aleatorio porque obviamente queremos aleatorizar
las letras y números, pero vamos a importar
una biblioteca aquí llamada string porque vamos a estar manipulando nuestras cadenas,
que incluirán letras, números, y así Así que tenemos Importar cadena, y ahora voy a crear una variable que va a
representar la contraseña. Voy a
llamarlo contraseña igual. Y recuerdo de
la lección anterior, voy a decir al azar, ok punto Choices, porque ahora vamos a estar lidiando con varias letras. Y ahora en paréntesis, recuerden que el primer parámetro para esta función o método
va a ser la población. Tenemos que decirle a
la función de dónde sacar la cadena
de las letras. Lo que pasa con
la biblioteca de cadenas es que déjame
mostrarte por aquí, el módulo string más bien, tenemos una variedad de métodos, o en este caso,
los llamamos constantes, ¿de acuerdo? Entonces podemos decir cadena punto
Pregunta a las letras de partitura. Esto tirará en letras que son a la vez mayúsculas, minúsculas Y luego podemos
precisar. Podemos decir cadena punto Preguntar en minúscula Esto extraerá solo letras
minúsculas, y luego tenemos para
mayúsculas, tenemos para dígitos, dígitos
hexagonales, puntuación, Entonces tenemos todos estos métodos, todas estas constantes
con las
que podemos trabajar al importar
el módulo string Así que déjame arrastrar esta. Lo que vamos
a hacer ahora mismo es por las elecciones aleatorias, queremos tirar de cadena punto ask y ahora subrayar
letras. ¿Bien? Vamos a sacar letras
aleatorias. Y luego además, además, también
queremos sacar
qué dígitos, queremos tener números
en nuestra contraseña también. Entonces básicamente, le estamos diciendo a la función,
le estamos diciendo a Python que, Oye, para las opciones de letras, para la contraseña, vamos a tirar en letras que son tanto mayúsculas como minúsculas y
luego también dígitos. Y luego, por supuesto,
el segundo parámetro, necesitamos especificar
cuántas letras dígitos van a estar en nuestra contraseña. Voy a decir K es igual, y vamos con diez. ¿Bien? Entonces una
contraseña bastante segura. Y ahora, todo lo que
tenemos que hacer es ¿qué? Simplemente imprima.
Vamos a imprimir. Y voy a decir generado. Así se generó la contraseña. Bien. Y luego déjame agregar
mi coma y luego contraseña Eso es. Vamos a
generar la contraseña. Y ahora vamos a probarlo, ¿de acuerdo? Entonces voy a
seguir adelante ahora mismo ejecutar el programa, y ahí tienes. Tenemos K, tenemos seis, tenemos F mayúscula, tenemos seis,
cero Smoleta, H, J,
cero, W mayúscula,
y luego capital Para que puedas ver
ahora mismo,
creó con éxito una contraseña
con diez caracteres. Teníamos letras
mayúsculas, minúsculas y
algunos números también. Pero y si en lugar de tener los caracteres
separados por una coma y códigos, queremos unir
todo juntos, así tenemos
una sola cadena ¿Cómo vamos a hacer esto? Tendremos que hacer uso de una función especial llamada
función join, ¿de acuerdo? En realidad es un método. Entonces lo que quieres
hacer ahora mismo es por aquí donde dice
al azar las opciones, vamos a agregar esta
función muy especial llamada punto join, y va así, ¿de acuerdo? Vamos a tener
un solo código, y luego punto join, y ahora tendremos que
abrir un soporte para cubrir todo
aquí, y ahí está. Entonces lo que esto va a hacer es que va a
generar la contraseña, pero luego se
unirán todos los caracteres para llegar ahí. Ahora bien, si ejecuto el programa
una vez más, ahí tienes. Ahora lo tenemos
luciendo mucho mejor. Puedo ejecutarlo de nuevo,
y ahí tienes. Ejecutarlo una vez más,
y ahí lo tienes. Así que es increíble cómo
con solo cuatro líneas de código, hemos podido crear nuestro propio generador de
contraseñas aleatorias. Nosotros, por supuesto, tuvimos que hacer
uso de dos módulos estándar, el módulo aleatorio y
luego el módulo string, y por supuesto, dos líneas
adicionales de código, y ahí está. Entonces, eso es todo. Gracias
por ver el video. Te veré en
la siguiente clase.
56. El módulo fecha y hora: Sigamos trabajando
con los módulos estándar. Y el siguiente
va a ser muy,
muy importante porque no sólo es un módulo muy útil, sino que también es relevante para
el mundo de la ciberseguridad Y estoy hablando
del módulo de fecha y hora. Este es un módulo
que puedes usar para mostrar cosas como tu
hora, la fecha actual. Se puede manipular
la fecha y así sucesivamente. Entonces déjame mostrarte
cómo trabajar con ello. Voy a quitar todo
esto y simplemente decir
importación y luego fecha hora, ¿de acuerdo? Ahora, supongamos que queríamos
registrar la fecha y hora actuales. Voy a bajar
aquí y voy a decir tiempo de subrayado
actual es igual, ¿de acuerdo? Y ahora tendremos que llamar al
módulo que es fecha, hora, punto, y ahora el método, que se utilizará para mostrar
realmente la fecha y hora
actuales. Y también se llama
fecha hora punto ahora. Es un poco interesante
que en el módulo diurno, tienes una función llamada day time ahora que
realmente se usa. Entonces todo lo que tengo que
hacer a partir de este punto momento es
simplemente decir imprimir. Y luego entre paréntesis, puedo decir que la fecha
y hora actuales es espacio, y luego puedes agregar mi coma aquí mismo y luego solo decir actual
en la partitura, tiempo y veamos Yo voy a ejecutar el
programa, y ahí tienes. La fecha y hora actuales
es el 27 de octubre de 2024, y ese es el
momento justo ahí, como pueden ver. No obstante, quiero
presentarles otra cosa. Verás, dado el hecho de
que por aquí tenemos día y luego
el día otra vez, es algo redundante, ¿verdad? Es decir, el código sigue funcionando perfectamente bien.
No me malinterpretes. El código sí funciona.
Pero si quieres ser muy profesional sobre esto, una cosa que podríamos hacer es podríamos decir eso, ¿
sabes qué? Desde el módulo diurno, importemos específicamente
el método de fecha y hora. Entonces lo que voy a hacer
ahora mismo es por aquí, voy a decir de
datetime, importar día Y ahora la belleza
es que por aquí, ya no
tenemos que decir punto
diurno sino que
solo puedes quitar todo esto. Y simplemente di punto
diurno ahora. Porque ahora mismo
le hemos dicho a Python que, oye, desde el módulo
llamado día, quiero que importes
específicamente la clase o el método llamado datetime ahora si vuelvo a ejecutar el programa, puedes ver que sigue
funcionando perfectamente bien Es solo que esto
es un poco más profesional y una
forma mucho mejor de escribir tu código. Ahora, quiero que
llevemos este programa un paso más allá y realmente combinemos el módulo diurno
con el módulo aleatorio. Entonces básicamente
vamos a generar actividades
aleatorias como inicio de sesión, cierre de sesión, subida de archivos, cambio de
contraseña, ya
sabes, cosas que un usuario podría hacer en un sistema informático, vamos a
generarlas aleatoriamente y
también las generaremos con
algunas marcas de tiempo, ¿de acuerdo? Así que voy a volver aquí. Y justo después del módulo
diurno, ahora
vamos a
importar al azar. ¿Bien? Ahora, indiquemos los diferentes tipos de acciones que
vamos a aleatorizar Entonces voy a decir
acciones iguales, y ahora podemos crear nuestra lista. Y agreguemos una
variedad de ellos, ¿de acuerdo? Primero que nada, vamos
con, Iniciar sesión coma. Vayamos con Logout también. Bien, tenemos algunas sugerencias
aquí como registrarse, restablecer contraseña, y, bien, creo que me gustan estos cuatro. Creo que cuatro es suficiente, ¿de acuerdo? Entonces diferentes acciones como iniciar sesión, cerrar sesión, registrarse,
restablecer contraseña Entonces vamos a
aleatorizar estas acciones. Permítanme agregar un guión bajo
entre el restablecimiento y la contraseña. Siempre que tus cadenas
tengan más de una palabra, si son como dos palabras, siempre usa un underscoe para
unirlas, es una forma mucho mejor de
escribir tus Entonces uno que voy a
hacer ahora mismo está por aquí, voy a mantener
el tiempo actual igual al punto diurno ahora. Sin embargo, también necesitamos
crear una variable que mantenga la acción
aleatoria Así que voy a venir
aquí ahora mismo y decir que acción de subrayado
del usuario equivale
ahora a la elección aleatoria de punto Y luego en parénster, las
acciones. Y ahí tienes. Y todo lo que tenemos que hacer
ahora mismo es simplemente
imprimir que el usuario realiza acción de sierra
en un momento determinado. Entonces podemos hacer esto. Voy a decir print y ahora la cadena F, y voy a decir que el usuario realizó y ahora nuestros rizo brackets para
representar la acción Así que eso va a ser usuario
en la acción de puntuación. Y ahora puedo decir en y luego las llaves rizadas, tiempo de subrayado
actual Agrega los códigos de cierre, cierra el corchete, y
eso debería ser todo. Así que sigamos adelante ahora mismo y ejecutemos el programa,
y ahí tienes. El usuario realizó registro en S y así. Volvamos a ejecutarlo. Se realizó inicio de sesión
esta vez, bien, realizó una contraseña establecida. Como puedes ver,
así está funcionando. Ahora bien, ¿y si al igual que
en la lección anterior, quisiéramos el usuario
realizara
más de una acción? ¿Qué vas a
hacer de manera muy sencilla? Vamos a venir aquí abajo, cambiar la elección por las opciones. Y luego recuerda,
tendremos que indicar cuántas acciones
queremos aleatorizar Voy a decir K es igual a dos, y ahora por aquí, puedo decir que el usuario
realizó
vamos a mantener el
texto impreso tal como está. Volvamos a ejecutar el programa. Y ahora puedes ver que
dice usuario realizado, dijiste contraseña iniciar sesión en este, ejecutarlo de nuevo, y ahora
es login y ahora Logo. Entonces así es como puedes trabajar
con el módulo diurno de acuerdo con el módulo
aleatorio para simplemente generar acciones aleatorias
en diferentes momentos. Gracias por
ver el video. Te veré en la siguiente clase.
57. Trabajar con una biblioteca externa: Redondear esta sección sobre
bibliotecas y módulos, necesito mostrarte
cómo puedes trabajar con una biblioteca externa. Y la que vamos
a estar trabajando
va a ser una biblioteca muy, muy poderosa,
y va a ser la biblioteca de criptografía Y de hecho, permítanme arrastrar
por encima de la documentación. Entonces esta biblioteca en particular, es desarrollada y mantenida
por la comunidad Python. Puedes ir a criptografía punto IO si quieres
aprender más Pero aquí mismo,
nos proporcionan ideas sobre cómo
importar realmente la biblioteca y específicamente una función
particular, que es la función Fernet ¿Bien? Esto es lo que
se utiliza principalmente para cifrar y también
cifrar mensajes. Entonces déjame mostrarte cómo
vamos a trabajar con ello. Y he agregado
algunas notas aquí porque es muy
importante que
entiendas paso a paso cómo va a funcionar
nuestro programa porque
para ser honestos,
puede llegar a ser bastante
confuso, ¿de acuerdo? No voy a mentir.
Recuerda que en el cifrado, podemos cifrar una clave, bien, vamos a usar un cifrado, luego
podemos usar para cifrar Pero entonces también podemos descifrar el mensaje que ha
sido encriptado, ¿de acuerdo? Entonces la forma en que funciona es que, primer lugar, al usar
la función frente, tendremos que generar la clave que vamos a usar tanto
para encriptar como para
encriptar y luego podemos
pasar esa clave a nuestro Recuerda que en el
mundo del cifrado, vamos a usar
cifrados que combinan un algoritmo y la clave
para el cifrado
y cifrado reales Entonces son básicamente cuatro pasos. En primer lugar,
generamos nuestra clave. Entonces decimos frente
no generes clave. Esto generará
la clave, y luego
podremos pasar la clave a nuestro cifrado Y ahora para cifrar
el mensaje real, diremos cifrado
porque ahora está sosteniendo la clave
y Y luego entre paréntesis, nuestra
función message dot code. Y luego
lo contrario a descifrar, podemos decir que el
mensaje descifrado será igual a Cipher Y ahora entre paréntesis
porque estamos descifrando lo que es el mensaje cifrado Así que vamos a pasar
eso y luego agregar el último método dot decode
para descifrar nuestro mensaje Así que comencemos desde el
principio, ¿de acuerdo? Lo primero que voy
a hacer es importar. Entonces voy a decir desde
criptógrafo P punto Fernet, vamos a importar
la clase de ¿Bien? Ese es el
primer paso. Ahora, el paso uno, recuerden, es generar la clave. Entonces voy a decir clave es igual, y ahora helecho generar la clave de puntaje. Esto
creará una clave. Y ahora podemos decir
cifra será igual a Fernet y En este momento, me
gustaría que, en primer lugar,
imprimiéramos la clave generada
que hemos creado. Entonces puedo entrar aquí
ahora mismo y decir print, y luego entre paréntesis,
digamos clave generada. ¿Bien? Así narrado, y luego key, puedo agregar mis dos puntos y luego agregar una coma y luego punto
clave el código Todo bien. Así que esto de aquí, esta función en particular
aquí es lo que vamos a usar para mostrar la clave como una cadena. Ahora, el siguiente paso será cifrar
realmente el mensaje. Entonces, ¿qué hacemos?
Podemos decir mensaje es igual. Agreguemos el mensaje. El predeterminado aquí
dice hola mundo. Hagámoslo un
poco más complejo. Voy a decir hola mundo.
Este es un mensaje de circuito. Bien, creo que esto está bien. Este es un mensaje de circuito. ¿Bien? Entonces este es el mensaje
que vamos a, primer lugar, cifrar
y luego descifrar Así que ahora voy a entrar
aquí ahora mismo y decir cifrado en el mensaje de alcance. Ahora vamos a cifrar el mensaje, y como
vamos a hacer eso,
vamos a decir
cipher dot encriptar,
y luego entre paréntesis, y luego entre paréntesis, vamos a pasar el
mensaje y el método dot code para Hasta el momento tan bueno. El siguiente paso ahora
será imprimir. Podemos imprimir el
mensaje cifrado ahora mismo, así que voy a
imprimirlo entre paréntesis. Agreguemos nuestros códigos,
y luego puedo decir que el mensaje cifrado es dos puntos y ahora agregue
mi coma y luego simplemente diga cifrado
en el mensaje de puntuación ¿Bien? Hasta el momento tan bueno. El último paso, por supuesto, después del cifrado
será desencriptar Entonces voy a decir mensaje de
subrayado descifrado igual a Cipher dot la cripta. Luego entre paréntesis,
vamos a pasar en lo que el mensaje
cifrado de
subrayado cifrado, y luego puntear el código Soportes, cierre
el último soporte, y ahí está. Así que el último paso en
este momento solo será imprimir mensaje
descifrado es y
luego el mensaje descifrado. Ahora puedo ver aquí sí
que tenemos Oh, no
hay
soporte de cierre, para perdonarme. Yo cometí un error ahí mismo. Y ojalá, esto debería funcionar. Déjame seguir adelante ahora mismo
y correr. Y ahí tienes. Así que ahora mismo se puede
ver en mi pantalla. Dice, Cargando el entorno
Nix. Entonces, la belleza de Python al trabajar
en plet es que pesar de que en realidad se
trata de
una biblioteca externa, va a importar
automáticamente la biblioteca porque básicamente está
instalada la biblioteca Y ahora tenemos el
programa funcionando, y dice que la clave
generada fue esta, ¿de acuerdo? Esa es una llave larga. Entonces el mensaje encriptado
es ahora esto justo aquí, muy, muy largo como se puede ver. Y claro, el
mensaje encriptado es hola mundo. Este es un mensaje secreto. Intentemos cambiar el
mensaje a otra cosa. Y voy a decir que
Python es increíble. Volvamos a ejecutarlo,
y ahí tienes. Entonces ahora tenemos una clave
generada diferente y, por
supuesto, un mensaje
encriptado diferente. Entonces así es como trabajar con
la biblioteca de criptografía. Y sólo para darle una recapitulación
rápida de nuevo, en
primer lugar, importamos
el módulo furnit de la criptografía de
la biblioteca Entonces, por supuesto, en el
mundo de la criptografía, vamos a
tener una clave que
usemos para el cifrado
y descifrado Generamos la clave
aquí mismo con el uso
del método Fn Dogenerate key, y luego asignamos esa
clave a nuestro Imprimimos la clave
generada
haciendo uso de la función de decodificación de
teclas Y luego para cifrar el mensaje, tenemos que, antes que nada, agregar lo que realmente es el mensaje El mensaje aquí es
Python es increíble. Y entonces decimos, Bien, mensaje
encriptado
será igual a ahora la función de
cifrado punto cifrar, y luego entre paréntesis
mensaje Entonces, el
método de codificación de puntos de aquí mismo convertirá el texto plano
o cadena en bytes, ¿de acuerdo? Y ahora el cifrado de puntos
tomará el mensaje codificado. Luego lo cifraré
produciendo una versión cifrada. Y por supuesto, la
salida será igual a la encriptada
en el mensaje de puntuación. Y entonces el último paso en este momento es realmente
descifrar el mensaje Así que cifra el punto
descifrar aquí mismo. Tomaremos el
mensaje encriptado y luego lo descifraremos, devolviéndolo al
formato original, y luego el doot
decodificaremos, Este método convertirá los bytes descifrados de nuevo en
un formato de cadena legible Y, por supuesto,
finalmente,
imprimimos el mensaje
descifrado real Entonces eso es todo, gracias
por ver el video. Te veo en
la siguiente clase.
58. Introducción al proyecto de la herramienta de cifrado y descifrado: Bienvenido al
próximo Mini Proyecto. Y por aquí,
vamos a construir nosotros mismos una herramienta para cifrar
y descifrar Ahora, la forma en que funciona es que
una vez que el usuario haya
corrido el programa, se le proporcionarán
cuatro opciones diferentes. puede ver en su pantalla,
pueden o bien generar
una clave de cifrado, cifrar el archivo,
descifrar el archivo o simplemente salir del programa Entonces si voy con la opción
número uno
aquí mismo para generar
una clave de cifrado, ahora se puede ver que nos
van a preguntar con la pregunta ingrese la ruta del
archivo para guardar la clave. Ahora bien, el punto de esto es que en realidad vamos
a proporcionar al usuario
la que en realidad vamos
a proporcionar al usuario
la capacidad de
usar la clave predeterminada que nosotros mismos
vamos a crear o podrían usar
su propia clave personalizada. Ese es el punto de
esta pregunta o prompt, pidiendo al usuario que
proporcione la ruta del archivo. Entonces, si el usuario decide
ir con la clave predeterminada, así que voy a presionar
Enter ahora mismo,
ahora verán que hemos creado un archivo por aquí llamado Encryption underscoolk
dot key que ahora
tiene una
clave particular Entonces ahora si iba a volver al programa y escribí
la
opción número dos para cifrar un archivo he creado
un archivo tx de muestra aquí
con algún texto aleatorio Entonces digamos, por ejemplo, queríamos cifrar este archivo Ahora voy a proporcionar
el nombre del archivo, sample dot TXT, presione Enter. Y ahora podemos proporcionar un
nombre para el archivo de salida. Entonces podemos llamar a este cifrado
bajo archivo sco punto TXT, ok. Y ahora presionamos Enter. Y ahora podemos ingresar la ruta de la
clave de cifrado que se va a usar. De nuevo, vamos a ir
con la clave predeterminada, así que presionaré Enter y
ahora nuestro archivo ha sido cifrado y se ha guardado otro archivo llamado archivo de
subrayado cifrado DTXT Puedes ver este es
el archivo aquí mismo. Entonces si lo abro, ahora mismo, se
puede ver que esta es
la versión encriptada de nuestro archivo DTXT de muestra Ahora bien, si vuelvo y voy con opción número tres para
descifrar un archivo, ¿bien? Y ahora vamos a descifrar el archivo que acabamos de cifrar, ¿de acuerdo? Así que voy a ir cifrado
subrayado archivo punto TXT. Este es el archivo
que acabamos Este es el archivo recién encriptado. Entonces ahora presiono Enter. Y ahora, ¿cuál es el nombre
del archivo de salida? Podemos decir descifrado,
subrayado archivo punto TXT. Presionamos Enter, y luego
presionamos Enter nuevamente para
usar la tecla predeterminada. Y ahora hemos
descifrado el archivo y lo enviamos a un nuevo archivo llamado Decryted Underscore
file Y si lo abro aquí mismo, ahora pueden ver que hemos vuelto exactamente
el mismo texto. Entonces básicamente la forma en que funciona el
programa es que
vamos a proporcionar un archivo, en este caso, ahora mismo
va a ser muestreado en TXT Vamos a cifrarlo usando la clave de cifrado
que hemos generado Vamos a
almacenarlo en un archivo llamado texto cifrado NSCofldo, y luego vamos a intentar descifrar el archivo y luego
guardar el contenido en Osco FL Do texti
encriptado Y como puedes ver ahora mismo, funciona perfectamente bien. Entonces les voy a mostrar exactamente cómo podemos construir este tipo de herramienta
en particular. Voy a dividir todo
el proyecto en tres temas diferentes. Entonces el primero,
vamos a crear una clave de cifrado luego
el segundo video, vamos a crear tanto las claves de
cifrado como de descifrado, las funciones Y luego finalmente en la
tarea número tres, agregaremos la interfaz de usuario. Sin perder más
tiempo, comencemos.
59. Tarea 1: crear la clave de cifrado: Bien, así que comencemos. Y
lo primero que vamos a hacer
es que vamos a importar
la biblioteca requerida,
y eso es, por supuesto, va a ser el punto criptográfico Furnt Así que voy a entrar
aquí y decir desde y luego criptografía punto furnt
y ahora importar net. Bien. Ahora, queremos escribir
una función que podamos usar para generar y guardar
nuestra clave de cifrado. Así que sigamos adelante y
creamos una función. Voy a llamar a
éste definir y digamos generar subrayado clave,
y ahora en Bracket Entonces este va a ser
el nombre de nuestra función que vamos a utilizar para
generar nuestra clave de cifrado. Ahora la cosa es que, siempre que
estés generando tus claves, cada vez que estés
usando esta función, realmente
podemos agregar un tipo
particular de parámetro, que será la ruta del archivo. Podemos crear el
nombre de nuestro archivo. Entonces lo que voy
a hacer ahora mismo es voy a decir archivo, y ahora subrayado ruta Bien, ahora
será igual, y ahora podemos agregar
el nombre del archivo En este caso ahora mismo en códigos, voy a decir cifrado
subrayado clave clave punto clave Así es como quieres guardar el archivo para tu clave de
cifrado. Va a ser el
nombre y luego la tecla punto. Y voy a agregar mi columna al final. Muy,
muy importante. Entonces ahora para generar la propia clave
real, se
puede ver que ya nos hemos
dado la información. Voy a decir
clave es igual y ahora
helecho ahora punto generar clave de
subrayado, y ahora en Entonces esto de aquí es lo que vamos a usar para
generar la clave real. Vamos a usar
este método, que es el helecho para generar clave, y vamos a guardarlo
en una variable llamada key Así que ahora, vamos a crear
el archivo en sí mismo. Entonces voy a
entrar ahora mismo, y voy a decir con, bien, W y ahora abierto. Entonces vamos a
crear nuestro archivo, y ahora entre paréntesis,
voy a agregar la ruta del archivo, ¿de acuerdo? Y ahora coma, y
ahora el modo correcto. Entonces va a ser WB, y ahora voy a decir
S K en el archivo de puntaje. Entonces esto de aquí mismo
abrirá un archivo en lo que llamamos un modo binario correcto. Ahora, tal vez se esté preguntando
qué es exactamente WB. Es similar al
modo de escritura, que solo será W, con el
que ya estamos familiarizados sin embargo, en WB, escribirás datos en formato binario en
lugar de texto plano. Entonces, básicamente, esto significa
que escribirá datos como bytes
sin procesar en
lugar de caracteres. Ahora tal vez te estés
preguntando, bien,
entonces, ¿cuál es exactamente el punto?
¿Cuál es la ventaja? Bueno, si escribes datos
binarios usando tu modo de texto
regular, que será W, el programa intentará interpretar
las picaduras como caracteres, lo que muy a menudo puede
resultar en errores de codificación, corrupción de
datos, o tal vez
incluso pérdida de integridad de datos. Por lo tanto, siempre se
recomienda usar WB siempre que
esté trabajando con cifrado, archivos de imagen o cualquier dato que no sea de texto para
garantizar que los datos se almacenen
correctamente en su formato de mordida original
sin ninguna alteración. Bien, entonces ahora tendremos que escribir la clave del archivo. Entonces voy a
venir aquí ahora mismo, y voy a decir
clave en el archivo de partitura, y ahora el método escribe, y
ahora ¿qué estamos pasando? Estamos pasando en la clave
propiamente dicha. Entonces esto de aquí mismo, vamos a
escribir la clave del archivo, y luego se hace, pero también podemos simplemente escribir
algo para imprimir. Entonces, digamos imprimir. Y ahora entre paréntesis, podemos usar una cadena. Y voy a decir códigos. Digamos que la clave de
cifrado de cifrado guardada, también, y ahora podemos agregar la ruta del
archivo subrayado ruta, y ahí está Así que hemos creado con éxito la función para generar
nuestra clave de cifrado. Pero ahora también escribiremos
otra función para cargar la
clave de cifrado del archivo. Entonces voy a entrar aquí. Voy a decir definir la clave de
subrayado de carga y
ahora entre paréntesis, voy a agregar una ruta de archivo Y ahora esto será
igual, por supuesto, a la clave de cifrado cifrado
subrayado clave clave punto clave Entonces ahora a partir de aquí,
voy a decir ancho y ahora abierto voy a agregar el archivo
en la ruta de partitura. Y ahora queremos leer. Queremos leer del archivo. Entonces, ¿qué crees que
vamos a usar? Vamos a usar
RB en contraposición a WB. Entonces ahora van a ser códigos. Va a ser RB. Déjame agregar mi coma ahí mismo, y luego cerrar el
corchete y ahora como clave en el archivo de puntaje. Tenía una columna. Y ahora, finalmente, para leer la
clave del archivo, simplemente
podemos decir clave
es igual, y luego clave, archivo de
subrayado, punto,
el método de lectura, y ahora entre paréntesis, y ahora simplemente podemos
devolver nuestra clave Entonces, la función que
acabamos de crear aquí, la
clave de subrayado de carga simplemente
leerá y devolverá la
clave de cifrado almacenada en el archivo, y por supuesto, esta va a ser
la clave que
se necesitará tanto
para el cifrado como para el descifrado Jelly siguiente video donde
vamos a
seguir adelante ahora mismo para
escribir funciones para cifrar un archivo y también
para descifrar el
60. Tarea 2: creación de las funciones de encriptación y desencriptación: Bienvenida de nuevo. Entonces en
el video anterior, creamos con éxito
la clave de cifrado, y le dimos la ruta del archivo de cifrado onscorekey dot key Y también escribimos una sencilla
función para cargar la clave. Así que ahora, escribamos las
funciones que vamos a
utilizar para cifrar realmente nuestros archivos, pero también descifrarlos Y por cierto, acabo de
notar por aquí en la línea nueve que no
agregué mi colon al final. Entonces, por favor, si no lo
has hecho, asegúrate de hacerlo también. Y luego también en la línea cinco, me perdí otros dos puntos,
así que por favor agregue las columnas a línea cinco y a la Línea nueve también, bien, entonces vamos a escribir una función para
cifrar nuestro archivo Entonces voy a bajar
aquí y digamos definir. Y llamemos a la
función cifrar,
cifrar, archivo de subrayado, Ahora, piensa en esto, ¿de acuerdo? Nuestra función porque
vamos a cifrar un archivo, vamos a requerir tres parámetros
diferentes, ¿de acuerdo? El primer parámetro
será el propio archivo real, que vamos
a estar cifrando. Entonces llamemos a ese archivo la
entrada en el archivo de puntaje. ¿Bien? Ahora, también
vamos a necesitar crear un archivo que contendrá
la versión cifrada. Entonces llamemos a ese archivo la
salida En el archivo sco. Bien. Y luego finalmente, vamos a necesitar la clave
real que vamos a usar para cifrar el archivo de
entrada, ¿verdad Entonces déjame agregar mi
colon al final. Entonces lo primero que
vamos a hacer ahora mismo
es vamos a crear nuestro objeto frente
con la clave proporcionada. Entonces voy a decir
Fernet ahora es igual a F, Fernet y ahora entre paréntesis, vamos a agregar la clave R. Bien. Entonces a partir de aquí, queremos leer el archivo de entrada. ¿Bien? Ese será obviamente
el siguiente paso será abrir
realmente el
archivo de entrada que queremos cifrar Entonces voy a decir con
abierto y ahora entre paréntesis, voy a decir la
entrada en el archivo de partitura, y ahora qué modo
vamos a ir con el modo binario de
lectura, entonces R B, bien. Y ahora voy a
decir un archivo y ahora, lo que vamos a
hacer es que vamos a leer el contenido del archivo, y vamos a pasar esos contenidos a otra variable. Entonces llamemos a la
variable original. Voy a decir original
ahora mismo va a ser igual a qué? El punto del archivo se lee porque queremos leer
el contenido del archivo, y agreguemos nuestros
corchetes ahí mismo. Bien, lo estamos haciendo genial.
Lo estamos haciendo genial. Ahora necesitamos cifrar el archivo. ¿Bien? Y por
cierto, olvidé agregar la columna
aquí en la línea 16. Entonces, vamos a agregar una
columna ahí mismo. Bien, entonces ahora que hemos
abierto el archivo, bien, ahora queremos cifrarlo Entonces voy a decir
llamemos a éste cifrado. Esta será la
variable para almacenar la versión cifrada real. Entonces voy a decir
encriptado será igual a
ahora Cifrar punto Furnt Ahora entre paréntesis
porque hemos pasado, punto de
archivo leído en la
variable original. Voy a entrar
aquí ahora mismo y simplemente decir leer nulo, entonces ¿qué es
lo último que vamos a hacer? Tendríamos que escribir el contenido
cifrado en un archivo. Así que voy a decir ancho
abierto, y ahora entre paréntesis, la salida en nosotros llamar archivo, y ahora el modo va a
ser binario correcto así WB. Y ahora voy a decir como archivo en nuestro colon ahí mismo. Y todo lo que tenemos que hacer
ahora mismo es decir archivo punto justo porque
estamos cifrando nuestro archivo, y ahora entre paréntesis,
¿qué va a ser Se va a encriptar. Entonces voy a decir encriptada. Por lo que esto escribirá el contenido
encriptado en el archivo. Y por supuesto, podemos simplemente agregar una declaración impresa se
puede decir imprimir. Y sí, podemos ir con
este archivo de impresión cifrado y guardado en
el archivo de salida. Entonces a partir de aquí, lo que tenemos que
hacer ahora mismo
será crear el funcional que podamos
usar para descifrar el archivo Entonces básicamente
va a ser un revés de lo que acabamos de hacer. Así que revisa esto así que
voy a venir aquí. Y llamemos a nuestra función
desencriptar en el archivo de puntuación. Y luego al igual que
con el cifrado, vamos a necesitar
tres parámetros, el archivo de entrada, el
archivo de salida, así como la clave. Entonces voy a agregar esos, como pueden ver, archivo de entrada, archivo de salida, y luego clave. Y ahora, como siempre, voy a decir Fernet es igual,
y luego a Fernet mayúscula,
y luego clave Backeds Entonces esta será la clave
que vamos a usar para descifrar nuestro archivo Entonces ahora lo que queremos hacer, queremos leer el contenido
del archivo cifrado. Entonces voy a entrar aquí
en una nueva línea. Voy a decir con abierto,
y ahora ¿qué vamos a abrir? Estamos abriendo la
entrada en el archivo de partitura, y ahora ¿qué modo R B? Voy a decir
archivo S, y dos puntos. Entonces, ¿ahora qué queremos hacer? Queremos desencriptar. Así que voy a decir el
cifrado Cifrado aquí es igual a archivo punto leído, estamos pasando el contenido del archivo cifrado a una variable
llamada cifrada porque ahora lo que vamos a
hacer es vamos a crear otra variable
llamada descifrada, y ahora esto va a
ser igual a Fernet Ahora voy a pasar descifrar
entre paréntesis encriptados. Así que esto de aquí es como
vamos a descifrar el
contenido de nuestro archivo Y ahora, ¿cuál es el último paso? Queremos guardar la
información descifrada en un nuevo archivo. Así que ahora simplemente voy
a decir con abierto, y ahora entre paréntesis, el archivo de subrayado de salida, y ahora WB un archivo, dos puntos, y ahora simplemente archivo punto derecho, y ahora descifrado así que vamos a escribir
conectar al Y luego, por último, podemos simplemente agregar las declaraciones impresas habituales. Así podemos decir
algo como print, brackets F columna, y
digamos archivo descifrado y
guardar en el archivo de salida Yo pienso, Bien,
creo que esto está bien. Y ahí está. Bien. En realidad, permítanme
mejorar en éste. Puedo decir archivo. ¿Bien? Y ahora llaves geniales, y luego el archivo de entrada Bien. Y ahora, voy a decir descifrado y guardado
en el archivo de salida Creo que esto es mejor, y ahí está. Así que una vez más, creamos funciones tanto para cifrar
como para descifrar nuestros archivos Para la función de cifrado, necesitamos tres parámetros. El archivo de entrada que
vamos a cifrar, el archivo que vamos a crear,
voy a almacenar la información
cifrada, que es archivo de salida, y luego la clave para el cifrado
real Así que creamos esa clave aquí
mismo diciendo find equals finito
y luego Bracket key Y ahora abrimos
el archivo original y almacenamos el contenido del archivo en
nuestra variable llamada original diciendo archivo
punto leído es igual a original. Y ahora para hacer el
cifrado en sí mismo, dijimos cifrada
igual a freno cifrar dijimos cifrada
igual a freno cifrar
y ahora entre paréntesis original, y ahora con abierto
porque queremos almacenar la información cifrada en
un nuevo archivo, el archivo de salida, creamos el archivo
aquí mismo en las líneas 19, 20 y 21, y luego hicimos
más o menos exactamente lo contrario
con la función de descifrado Así que Jome el próximo video consciente, vamos a
seguir adelante y ahora crear la función principal para
la interacción del usuario
61. Tarea 3: añadir la interfaz de usuario: Ven a la parte final del
programa donde vamos
a crear la interacción principal
del usuario. Vamos a proporcionar al usuario cuatro opciones diferentes. A lo mejor les gustaría
generar un archivo cifrado clave, un archivo descifrador,
tal vez incluso simplemente salir Y luego dependiendo de la opción
que elijan, vamos
a tener que hacer algo. Entonces comencemos, ¿verdad? Entonces voy a decir definir principal. Este será el nombre
de nuestra interfaz, y permítanos imprimir un mensaje de bienvenida
general. Esto no es necesario, pero
bueno, vamos a hacer eso. Bienvenido a la herramienta de
cifrado, Descifrado. Bien. Bien. Ahora vamos a crear el bucle while que
va a pasar por
las cuatro opciones. Voy a decir mientras
y ahora cierto colon. Y ahora vamos
a imprimir exponer las opciones. Entonces voy a ir con impresión. Y ahora número uno,
generar una clave de cifrado. Bien. Y ahora vamos
con la opción número dos, que sería
simplemente cifrar cifrar un archivo la opción número tres
será lo que las Archivo. Y ahora la opción final, que es la
opción más aburrida, salir del programa. Bien, ahí está. Ahora, como ahora tenemos
las cuatro opciones, solicitemos al
usuario que
nos proporcione con qué opción le
gustaría ir. Entonces voy a
venir aquí ahora mismo, y vamos con la
variable u opción. ¿Bien? Entonces voy a decir opción
y ahora es igual y ahora entrada. Entonces, vamos a pedirle al
usuario que nos diga qué opción le
gustaría ir con signo de
interrogación, ¿de acuerdo? Entonces preguntémosle al usuario, Oye, ¿qué te gustaría hacer? Ahora, tendremos que
crear las declaraciones IL para cada opción en particular. Así que vayamos con el
primero de aquí. Entonces voy a decir si la
opción es igual a uno, qué queremos
hacer de manera muy sencilla, podemos generar nuestra clave. Entonces puedo venir aquí
ahora mismo y simplemente decir generar clave de subrayado, y ahora entre paréntesis, ¿cuál es
el nombre de la clave Eso es cifrado
subrayado clave punto clave. Entonces podemos ejecutar la función
inmediatamente, ¿verdad? Y esto funcionará
perfectamente bien. Sin embargo, quiero
mostrarte algo, ¿de acuerdo? Esto no es necesario. Pero, ¿y si quisiéramos
proporcionar al usuario la opción de usar realmente su propia clave personalizada y no solo la clave predeterminada
que ya hemos creado Entonces le estamos dando al
usuario dos opciones, ¿de acuerdo? Puede usar
la clave predeterminada que ya
tenemos o puede proporcionarnos la ruta a
su propia clave de cifrado. Ahora bien, ¿cómo haríamos esto? Bueno, ya he escrito
la línea aquí mismo, ¿de acuerdo? Entonces déjame agarrar esto, corta. Voy a bajar
aquí y luego pegar. Y déjame explicarte
lo que está pasando aquí. Así que vamos a tener que pasar esto
a la
ruta de subrayado del archivo variable. Y ahora entrada. Entonces vamos a preguntarle al usuario que oye, ingrese la ruta del archivo
para guardar la clave. Ahora, por aquí donde dice el cifrado
predeterminado en la
clave de punto bajo clave sigue siendo
parte de la cadena. Sólo le estoy indicando
al usuario que oye, si no nos
proporciona su propia clave personalizada, vamos a usar
la clave predeterminada
que es el cifrado
bajo clave de punto clave. Ahora bien, esto es muy importante, donde dice, o encriptación
bajo clave de punto clave. Ahora, aquí mismo,
le estamos diciendo a Python que, Hey, debería por si acaso, aunque se le
haya proporcionado al usuario la opción de usar
su propia clave personalizada, si quiere usar nuestra propia clave
predeterminada, entonces úsela. Entonces aquí dijimos o y ahora
el nombre de nuestra clave predeterminada. Así que todo lo que tenemos que hacer
aquí es simplemente eliminar la opción predeterminada
y luego simplemente pasar el archivo
en la ruta de puntuación. Y ahí tienes. Entonces esa es la opción número
uno, toda trazada. Pasemos a la
opción número dos. Voy a entrar
aquí y decir,
L F, elección es igual a dos, dos puntos. Entonces aquí dentro, nos
gustaría cifrar el archivo. Ahora recuerda, para
cifrar el archivo, necesitamos tres parámetros En primer lugar, tenemos que pedirle
al usuario que
nos diga el archivo que le
gustaría cifrar, que será el archivo de entrada Y luego también donde quisiera almacenar
el contenido encriptado. ¿Cuál va a ser el
nombre del archivo de salida? Y luego, tercero, qué clave les
gustaría usar
para hacer el cifrado. Entonces voy a
venir aquí ahora mismo. Pasemos la
entrada variable en la elección de puntaje. Oh, perdóname. Debería ser la
opción LI. Sin elección. Me dejó llevar
opción, ninguna opción. Así entrada archivo de entrada. Perdóname, ingrese archivo de
guión bajo. Voy a decir iguales. Y ahora pidamos
al usuario que
nos diga cuál es el nombre de los archivos. Voy a decir entrar
la ruta del archivo para cifrar déjame
eliminar este mensaje Entonces ingresa la ruta
del archivo para cifrar. ¿Bien? Entonces, vamos a pedirle
al usuario que haga eso. Y luego la salida en el archivo Sco va
a ser igual a la entrada. Y ahora, pidamos
al usuario que
nos diga el nombre de los fs de Apple. Voy a decir ingrese el
nombre del archivo de salida. Columna. Y ahora, finalmente, ¿qué pasa con la llave? Voy a decir clave
en el camino del alcance. Bien, va a
ser igual a input. Y ahora podemos decir, entrar en la ruta de la clave de
cifrado de cifrado. De lo contrario,
se utilizará el valor por defecto, ¿de acuerdo? Así que voy a simplificar la sentencia
string aquí. No voy a indicar
el nombre del niño predeterminado. No creo que sea necesario. Entonces todo lo que tenemos que hacer en este momento en este
momento es solo
decir también el o cifrado. Subrayar clave punto clave. Y ahí tienes, ¿verdad? Entonces, una cosa que tenemos que
hacer aquí es que tenemos que dar cuenta de
los errores, ¿de acuerdo? ¿Qué pasa si el usuario y
si tal vez proporcionó el archivo de entrada incorrecto o el nombre del
archivo de salida es incorrecto, o tal vez incluso la
clave no es correcta? ¿Qué debería pasar? Entonces, brindemos la opción
ahora mismo para atender eso. Entonces voy a decir inténtalo. Recuerda eso, y ahora la clave
es igual a la clave de subrayado de carga. Y ahora entre paréntesis,
el camino clave, ¿de acuerdo? Y ahora las partes más importantes cifran En el archivo de partitura Y ahora entre paréntesis, ¿cuáles
son los tres parámetros? Tenemos la entrada
en el archivo de puntaje, tenemos la salida,
en el archivo de puntaje, y ahora también tenemos la clave. Entonces estos son los
tres parámetros. Y si hay algún error,
generemos esto. Voy a decir,
excepto Excepción. Bien, como E. Y ahora podemos
imprimir nuestro mensaje de flecha. Entonces voy a
usar la cadena F, y luego voy a decir algo así
como flecha durante el cifrado. Bien, dos puntos y ahora
podemos usar nuestras llaves de color para indicar cuál es el error
particular, y ahí tienes Así que hemos
creado con éxito la opción número dos con x user para proporcionar la ruta del
archivo que quieren cifrar, el nombre del archivo de salida, y luego también la clave también Y también hemos agregado
algún manejo de errores. Fantástico. Ahora, todo lo que voy a hacer es que voy a agarrar
este bloque de código, ¿de acuerdo? Y simplemente voy a
pegarlo porque piénsalo, ¿de acuerdo? El proceso de
cifrado y cifrado es casi exactamente lo mismo. Es justo enfrente, ¿verdad? Así que voy a copiar
todo ese bloque de código, y voy a venir aquí, y ahora voy a pegarlo. ¿Bien? Ahora note, sin embargo, que la sangría
no es correcta. Así que asegúrate de que cuando hagas exactamente lo
mismo que yo, asegúrate de que tu
sangría sea correcta Asegúrate de que todo
esté alineado correctamente, y esto debería estar bien. Bien, todo lo que tenemos que hacer
ahora mismo es cambiar las
opciones aquí, así que la opción número
tres a la número dos. Archivo de entrada, voy
a decir ingrese la ruta del archivo a qué descifrar Bien. Archivo de salida. Introduzca el nombre
del archivo de salida. Eso está bien. Ingrese la ruta
de la clave de cifrado. De lo contrario, bien,
ten en cuenta que la clave de cifrado es exactamente lo
mismo que la clave de
descifrado, por lo que no necesitamos
cambiar el texto aquí Puedes cambiarlo
si quieres, pero sólo voy a
dejarlo como está. Y finalmente, bien,
por aquí también, solo
necesitamos cambiar esto y ahí vas el
manejo de errores está intacto. Y una cosa más que
tenemos que cambiar va a estar por aquí donde
dice el archivo encriptar Por aquí, debería
ser un archivo desencriptado, ¿de acuerdo? Entonces quieres asegurarte de que
cada vez que copies y pegues código y necesites
alterar algún texto, asegúrate de que lo
revises correctamente. De lo contrario, puede
terminar teniendo algunos problemas. Bien, todo lo que tenemos que
hacer ahora mismo es agregar la cuarta opción. Entonces voy a entrar
aquí y decir, yo opción equivale a cuatro. Podemos imprimir Xs en el programa. Y ahora vamos a tener
la declaración break, también, porque recuerda que a
pesar de que le brindamos cuatro
opciones al usuario, podrían volverse bastante tontas y decidir elegir la
opción número cinco o seis o siete o
cualquier otra opción que ni siquiera exista. Entonces tenemos que dar cuenta
de eso también. Entonces voy a decir break y luego voy a proporcionar
la declaración final de Ls. Y ahora podemos simplemente decir
print y luego decirle al usuario, por favor elija una opción válida. Y ahí tienes.
Y ahí está. Y ahora, todo lo que tenemos que
hacer es ejecutar la función principal, y ahí está. Entonces ojalá, el
programa debería funcionar. Déjame seguir adelante ahora mismo y ejecutar el programa,
y ahí tienes. Bien, así que vamos a probar esto. Voy a ir antes que
nada, con la opción número uno, presione Enter. Voy a ir
con el valor predeterminado, así que voy a presionar Enter otra vez. Y ahí
tienes. Impresionante. Entonces puedes ver ahora mismo que
tenemos la clave de cifrado que ha sido creada
por el programa. Entonces ahora,
intentemos cifrar un archivo. Así que voy a
venir aquí ahora mismo, y vamos a crear un archivo D TXT de
muestra. Agreguemos algo de texto aquí. Se trata de texto de muestra, que vamos a
cifrar y también descifrar Bien. Entonces veamos. Voy a seguir adelante
ahora mismo e ir al programa. Vamos con la opción
número dos ahora mismo. Así que intentemos cifrar
nuestro archivo TXT de muestra. Voy a presionar
Enter. Y ahora, ¿cuál va a ser el
nombre del archivo de salida? Llamemos a esto el archivo de llamada
encriptado punto TXT. Vamos. Vamos
a usar la clave predeterminada. Voy a presionar
Enter. Y ahí tienes. Entonces echemos un vistazo. Tenemos el cifrado bajo texto
Scoefled, y ahí está. Esta es la versión cifrada
de nuestro archivo de texto de muestra. Así que ahora, intentemos descifrar el archivo cifrado y veamos si vamos a
recuperar el mismo texto Voy a ir con la
opción número tres. Ingresa la ruta
del archivo a descifrar, va a ser encriptado
undersCople punto TXT. Y ese será el
nombre del archivo de salida. Podemos llamarlo descifrado,
Underscofle punto TXT. Vamos a ir
con la clave por defecto. Y el Oh, oh, oh, oh, lo siento, tenemos
un mensaje de error. Dice, No hay tal archivo, Dictura encriptada
underscoflt ¿Qué hice mal? Nosotros sí tenemos Oh, ¿
ves lo que hice? Mi archivo se llama
cifrado, no cifrado. Sí me disculpo. conseguirme un
par de anteojos nuevos. Sí me disculpo. Intentemos volver a
ganar eso. Entonces
la opción número tres. Entonces el archivo aquí está encriptado. Ah, vamos a archivar punto TxD. Ahora el nombre del archivo de salida, voy a ir con descifrado. En el archivo les go, punto TXT. Clave predeterminada, y ahí tienes. Bien, entonces ahora echemos un
vistazo al archivo descifrado, y podrás verlo funcionar Entonces, antes que nada,
ciframos el punto de muestra TXT. Tenemos un archivo cifrado,
que puedes ver ahora mismo, y luego desciframos
este archivo para recuperar exactamente los mismos
textos que puedes ver ahora mismo, funciona perfectamente bien Intentemos la opción número
cuatro para salir del programa. Bien, salí del programa. Ejecutemos el programa
una vez más, y vayamos con la
opción número siete. Y dice, por favor
elija una opción válida, y ahí va. Así que, Whoa, hemos
creado con éxito nosotros mismos un
cifrado y descifrado Ha sido bastante, pero ojalá hayas aprendido
algunos conceptos nuevos como usar los modos
binario de escritura y lectura binarios. También aprendiste
cómo puedes proporcionar la opción para que el usuario use su propia clave personalizada
o use la clave predeterminada. Y ojalá aprendiste
mucho en este proyecto de dinero. Muchas gracias por ver, y por supuesto, los
veré en la próxima clase.
62. Introducción a la sección Oop: Bien, así que bienvenido
a lo que podría ser la sección final
de este curso Y aquí, estamos
hablando de la OOP, la programación orientada a objetos.
Suena como un bocados. Suena muy complicado,
pero no te preocupes. Voy a cubrir todos
los conceptos básicos aquí. Entonces este va a ser un tema grande, grande, grande porque lo
creas o no, si puedes dominar POO, puedes escribir algunos programas realmente
increíbles, ¿de acuerdo? Entonces en esta sección, vamos
a aprender qué son los objetos. También vamos a hablar de
clases, ¿de acuerdo? Entonces, ¿cuál es la relación
entre un objeto y una clase? Y claro, vas
a aprender sobre métodos. Te voy a dar
muchos ejemplos. También va a haber algunos ejercicios de
codificación. También vas a aprender
algunos conceptos muy importantes como la encapsulación, herencia e
incluso polimorfismo Oh, ¿qué
es exactamente el polimorfismo? Eso suena muy
complicado, ¿verdad? No es tan complicado como suena. No te preocupes por ello. Entonces va a ser un tema muy,
muy interesante, y estoy muy emocionado de
enseñarte sobre OOP Entonces, como siempre,
sin perder más tiempo,
saltemos de inmediato.
63. Introducción a la POO: Ven a la nueva sección donde vamos a estar echando
un vistazo a la programación
orientada a objetos, también
conocida como OOP Bien, aquí es donde vamos
a profundizar en algunos
aspectos avanzados de la programación Pero no te preocupes,
estaré aquí para explicarte de la manera
más sencilla posible. Entonces, ¿qué es exactamente POO? Lo que ves frente a ti es básicamente una biblioteca, ¿verdad? Tienes todo tipo de libros. Tienes libros
sobre antropología, arqueología, biología,
química, matemáticas, etc. Imagina que eras el bibliotecario. Tú eras la persona a
cargo de todos estos libros. Idealmente, por supuesto,
necesitarías algún tipo
de sistema para administrar
estos libros, ¿verdad? Necesitarás saber
dónde poner los libros. Necesitas conocer las
características de cada libro, como, ya sabes, el
título del libro, el autor del libro. Y también si
los libros están o no disponibles, tal vez hayan sido quemados, ya
sabes, cosas así Entonces, imagina que creamos
una clase llamada libro, ¿de acuerdo? Y así como dije,
esta clase puede definir varios tipos de características sobre cada libro como
el título del libro, el autor, el género,
el color de portada. Pero además de
los atributos físicos del libro, también
podemos
hablar de las cosas que podemos hacer con el libro. A lo mejor te puede pedir prestado el libro. Y si podemos, ¿por cuánto tiempo
podemos tomar prestado el libro? Tal vez incluso podamos morder
el libro y así sucesivamente. Bien, piensa en todos
estos atributos bajo el libro de clases. ¿Bien? Ahora, Cosas como el
título, el autor, el género, las cosas que describen
físicamente el libro, podemos llamarlos
atributos, ¿verdad? Ya hemos hablado de atributos
en este curso. Pero entonces los métodos, los métodos describirán qué es
lo que
realmente podemos hacer con cada
libro. ¿Puedes chico? ¿Se puede morder? Entonces, básicamente, la clase libro
definirá tanto los atributos como
los métodos. Entonces, en otras palabras, la clase de libro es como una descripción
general de cómo podría ser un libro y lo que
realmente podemos hacer con el libro. Pero todavía no nos estamos refiriendo a
un libro específico. Bien. Ahora, cada
libro individual en la biblioteca es lo que nos referimos como un
objeto de la clase de libro. Entonces, una vez más, la clase de
libro
nos dará una descripción general de los atributos y
métodos de cada libro, mientras que los libros mismos,
los libros individuales, se
llamarán
objetos de la clase de libro. Entonces los
atributos objeto del libro A, por ejemplo, podrían ser el
título es programación Python. El autor podría ser, Jack, y entonces el color
podría ser azul, ¿verdad? Y luego echemos
un vistazo al libro B. El título podría ser
ciber uno oh uno. La autora es Alice
y el color es rojo. Estos son
atributos individuales de cada libro, y los atributos
tienen sus propios valores. El valor del
atributo color para libro A es azul como
ejemplo, a la derecha, y así sucesivamente. Entonces los métodos, también podemos, por
ejemplo, decir libro A tiene
un método llamado préstamo, por lo que una vez que el libro
ha sido prestado, la biblioteca tendrá que
actualizar los registros para indicar que el libro ya
no está disponible
para ser Y de la misma manera, imagina que el Libro B había sido tomado prestado en el pasado, pero ahora se le ha devuelto Luego podemos marcar el Libro
B como disponible nuevamente. Entonces estos son métodos,
estos son atributos. Entonces, para darte un resumen rápido, la clase es como
la descripción general del libro donde se definen los atributos
y métodos El objeto es una instancia. Básicamente un
libro específico en una biblioteca, un objeto específico bajo
la clase, la clase de libro. Los atributos serán la
descripción física de cada libro, mientras que los métodos también
conocidos como acciones están bien, esencialmente las
acciones que se pueden realizar en cada libro. Entonces Jerman Vernick video donde vamos a empezar a echar un vistazo a algunos ejemplos
64. Cómo crear una clase básica: Lo vamos a hacer
ahora mismo es
vamos a crear un código centrado alrededor del ejemplo
anterior que te
di con respecto a
la biblioteca, los libros, y los
atributos y métodos
asociados a cada libro. Entonces lo primero que
tenemos que hacer es definir el libro de clases. Entonces voy a decir libro de clase y así es como crearíamos la clase llamada libro
muy sencillo. Ahora bien, la cosa es,
necesitamos indicar los atributos que
se van a asociar a cada
objeto del libro. ¿Bien? Entonces para hacer esto, voy a decir la multa. Y ahora, en él,
Subrayado, subrayado. Y ahora dentro de los paréntesis, aquí es donde ahora vamos a indicar qué atributos se van a asociar
con cada libro. Normalmente comienzas
con algo que se llama yo mismo. ¿Bien? Esto es muy, muy común en la
programación orientada a objetos, ¿bien? Así que el yo es una manera de referirse a cada objeto individual de la
clase con la que estamos tratando. En este caso, ahora mismo, va a ser cada libro
individual. Así que siempre vas
a empezar por sí mismo, y ahora el atributo real. Entonces voy a ir
con título, autor, y agreguemos uno más.
Digamos Génova. ¿Bien? ¿Por qué no? Génova, Colón. Hasta el momento tan bueno.
Bien. Ahora tendremos que asignar variables
a
cada uno de nuestros atributos. Entonces voy a empezar
diciendo auto punto título. ¿Ves cómo
funciona esto ahora mismo? El título del auto punto es igual al título. Ahora, ¿puedes adivinar el
siguiente auto punto autor es igual al autor Y luego, de nuevo, auto punto
Gena equivale al género. Hasta el momento tan bueno. Voy
a añadir un atributo más. Técnicamente no es
un atributo que hayamos definido hasta ahora, pero será útil
una vez que empecemos a crear los métodos que
aplicaremos al libro, ¿de acuerdo? Y es que queremos
indicar si un libro está disponible o no
para ser prestado o no Entonces voy a decir
auto punto disponible. Bien,
digamos que el yo está bien, está en el marcador disponible, ¿de acuerdo? Queremos inicializar esto para que sea verdad desde el
principio, ¿de acuerdo? Entonces, al principio, todos los libros están disponibles
para ser prestados, ¿de acuerdo? Ahora, hemos definido los
atributos, título, autor, gena. También hemos agregado
uno de los métodos, uno de los parámetros
que vamos a usar en nuestros métodos, es
decir, si
el libro está disponible o no. Entonces ahora, definamos los métodos
reales por sí mismos. Y el que vamos
a tratar aquí va a ser el préstamo Entonces voy a
decir pedir prestado y ahora entre paréntesis, yo, ¿de acuerdo? Estamos creando un método que podemos aplicar al libro de objetos. Entonces digamos que si el libro está efectivamente disponible,
¿qué debería pasar? Entonces voy a decir si auto refiriéndose
a lo que el libro es, de hecho, disponible?
¿Qué hacemos? Recuerda que una vez que el libro
esté disponible para ser prestado, necesitaremos actualizar los
registros en la biblioteca para indicar que el
libro ya no está disponible porque ahora
solo ha sido prestado, Entonces vamos a decir
self dot está disponible, no
debería ser igual a qué? Falso, porque ya
no está disponible. ¿Bien? Mira de nuevo la línea 11. Esto es porque esto es
muy, muy importante, ¿de acuerdo? Aquí mismo, estamos haciendo eso
por primera vez, alguien quiere
tomar prestado este libro, tal vez no por
primera vez, pero el libro está actualmente disponible.
Entonces, ¿qué debería pasar? Debemos decir eso, bien, debemos actualizar los registros para indicar que el libro ya no
está disponible, y luego dejarnos
imprimir algo, ¿bien? Digamos imprimir. Y ahora entre paréntesis,
voy a usar la cadena F porque quiero hacer referencia al título real del libro que
ha sido prestado Entonces voy a
abrir mis frenos universitarios, y voy a decir auto punto Qué punto título. Bien. Y ahora podemos
teclear lo que sea, queremos teclear
ha sido prestado. ¿Bien? En los
códigos de cierre. Y ahí está. Entonces deberían
pasar dos cosas si el libro está
disponible para ser prestado. En primer lugar, necesitamos
actualizar los registros
para indicar que el libro ya está disponible porque
ahora ha sido prestado Y entonces deberíamos
imprimir el mensaje diciendo que el libro
ha sido prestado. Ese, ¿para qué sirve la
declaración de aquí? ¿Qué por qué estamos indicando se? Tenemos que indicarnos se porque
en la línea 11 donde dice, Si self está disponible
ahora mismo en esta etapa, el programa está asumiendo que el libro está actualmente disponible. Pero, ¿y si en un escenario
en el que el usuario de la biblioteca quisiera pedir prestado un
libro que en
realidad no estaba disponible
en primer lugar Eso es lo que va a representar
aquí la declaración de Ls. Entonces se, si el libro no estaba
disponible inicialmente, simplemente imprimir Imprimir, imprimir. Y entonces sólo podemos decir, perdón. Este libro no está disponible
actualmente. Y se me olvidó
poner esto en comillas. Lo sentimos, este libro no está disponible
actualmente. Por supuesto,
también podemos usar la cadena F y el autotítulo para hacer referencia
al nombre real del libro, pero eso no es necesario. Pero solo voy a decir,
perdón, este libro
no está disponible actualmente. Bien. Impresionante. Ahora,
definamos otro método, que sería
devolver el libro. Entonces podemos tomar prestado el libro,
pero también podemos devolverlo. Entonces voy a decir definir
retorno en el auto del libro de partitura. Así que hemos dado la
función del método llamado Return On score
Book y luego self. Entonces en este caso, ahora mismo, ¿qué debería pasar si el
libro ha sido devuelto? Ahora vamos a decir
self dot está disponible ahora
debería ser igual a lo cierto porque el libro ya
está disponible. Y sigamos
ahora mismo e imprimamos un mensaje y
digamos, también hagamos referencia. Entonces voy a decir cadena F, y luego se ha devuelto el nombre del
libro. ¿Bien? Entonces probemos esto. Pongámoslo en acción, ¿de acuerdo? Así que voy a venir
hasta aquí abajo. Digamos libro subrayado A, equivale ahora al
objeto real llamado libro Y ahora dentro,
vamos a proporcionar el nombre, el título del
libro, antes que nada, así que digamos Python uno oh uno. ¿Bien? ¿Qué sigue el autor? Entonces llamemos a la autora Alice. ¿Bien? Y entonces, ¿cuál
va a ser el género? Digamos programación, ¿verdad? Programación. ¿Bien? Y ahora, vamos a crear otro objeto. Este objeto será representado
por libro sobre la partitura, B es igual, y ahora otra vez libro, y ahora entre paréntesis, digamos cyber
dos oh uno, ¿bien? Y entonces el autor
aquí va a ser Jack y entonces ¿cuál
va a ser el género? Digamos tecnología,
tecnología, ¿verdad? La tecnología debería ser el género. Y ahí está. Así que voy a
venir hasta aquí abajo. Y ahora, llamemos a
los métodos, ¿de acuerdo? Tenemos todo
en su lugar ahora mismo. Llamemos a nuestros métodos,
que, por supuesto, qué pedir prestado y luego regresar Entonces puedo decir libro, en primer lugar, subrayar un punto Pedir
prestado ¿Bien? Entonces, antes que nada, vamos a tomar prestado el libro Y luego déjame ejecutar el programa. ¿Ves
ahora mismo, dice, Bien, Python uno oh uno ha sido
prestado porque por aquí, va a
indicar en línea 11 Va a indicar desde
el principio que,
Bien, el libro está disponible. Ahora se ha tomado prestado, así que tendremos que actualizar los
registros para decir que es falso Y ahora vamos a decir que
el libro ha sido prestado. Pero ahora en esta etapa actual, el libro no está disponible, ¿verdad? Entonces, apuntemos
a la declaración L. Ahora debería imprimir, lo siento, este libro no está disponible
actualmente si vuelvo a ejecutar el método. ¿Y si alguien más
entra ahora y quiere tomar prestado el libro que
ya no está disponible ¿Qué va a pasar? Yo
voy a ejecutar el programa. Y ahora lo ves
decir, perdón este libro no
está disponible actualmente. Bien. Pero, ¿y si y si
ahora devuelvo el libro? ¿Qué va a
decir? Va a decir Python uno a uno
ha sido devuelto. Y ahora, si vuelvo a ejecutar el
método return lo siento, el método de préstamo
otra vez, una vez más ¿Se iba a
decir? Va a decir que Python 11 ha sido prestado. Así que ya puedes ver,
funciona perfectamente bien. Así que solo para darte una recapitulación muy
rápida, antes que nada, tuvimos que crear una clase
llamada libro ahora dentro, tenemos que definir
los atributos
asociados a cada libro Y lo hicimos diciendo, definir la puntuación en la
partitura en ella sobre la partitura, y luego los parámetros o
los atributos entre paréntesis. Y luego asignamos
cada atributo a un valor por lo que self o title
será igual a title, self dot author
será igual a author, self dot género
será igual a Gena Y entonces también creamos un
método aquí que nos
indicará si
podemos o no tomar prestado el libro Entonces esto es básicamente
un atributo booleano. Dijimos, Bien, self dot está disponible al principio
debería ser igual a true. Y ahora creamos dos métodos
diferentes. El primero aquí
sería el préstamo. Entonces, ¿qué pasa cuando se toma prestado
un libro? Si inicialmente estaba disponible, actualizaremos los registros para decir que self está disponible ya no está
disponible, por lo que es falso. Y entonces deberíamos
imprimir el título que dice, perdón este libro
ha sido prestado. Sin embargo, de lo contrario, si el libro ya estaba
prestado inicialmente, simplemente
deberíamos imprimir lo siento, este libro no está disponible
actualmente Y luego el segundo método, ¿qué sucede cuando se devuelve el
libro? Ahora debemos actualizar nuestros
registros una vez más para indicar que self está
disponible ahora es cierto, y podemos imprimir el nombre
del libro diciendo que
ha sido devuelto. Y luego finalmente,
aprendemos a crear objetos individuales
en libros individuales. Podemos simplemente decir libro
subrayado A es igual a libro, y luego entre paréntesis, tendremos que rellenar los
valores para los atributos Y luego creamos
otro libro, libro B, que es Cyber
to one Jack Technology. Y luego llamamos los Métodos, y
eso es prácticamente todo. Así que gracias por
ver el video. Te veré en
la siguiente clase.
65. Crear una clase básica, parte 2: Antes de pasar
a una nueva lección de programación orientada a objetos, quería darte
un ejemplo más para que
realmente puedas entender qué es
lo que estamos haciendo. Así que vamos a crear una clase
diferente. ¿Bien? Hagamos algo
relacionado con la ciberseguridad Digamos, por ejemplo,
que queríamos crear una clase llamada user, ¿bien? Y las cuentas de usuario
tendrán diferentes atributos como el nombre de usuario, el rol, ¿bien? Y luego
creemos también un método. Digamos, por ejemplo,
¿qué puede hacer el usuario? El usuario puede iniciar sesión. ¿Bien? Entonces hagámoslo. Entonces voy a quitar
todo este código. Y en la parte superior, sólo
voy a decir clase de usuario usuario. ¿Bien? Entonces, ¿cómo
creamos nuestro usuario? Decimos clase y luego usuario
dos puntos. Y ahora ¿qué hacemos? Tenemos que definir
los atributos que se asociarán a
cada cuenta de usuario. Entonces voy a decir definir subrayado en ella. En la partitura. Y ahora entre paréntesis, ¿
qué tenemos? Tenemos uno mismo porque
tenemos que hacer referencia a cada cuenta de usuario
individual. Entonces voy a decir yo mismo, y entonces los atributos serán nombre de
usuario, y vamos a
ir con el rol? Uno más. Rollo. Frío
, y eso es todo. ¿Qué va a ser lo
siguiente que hay que hacer? Lo siguiente
ahora será asignar
variables a cada uno
de nuestros atributos. Entonces voy a decir self
dot usa un nombre es igual, usa un nombre. Bastante
sencillo. Y entonces auto dot roll debería
ser igual a qué rollo. Ahí está. Bien, entonces hemos
definido los atributos. Ahora bien, ¿qué pasa con los métodos? Vamos a crear solo un
método llamado log in, ¿de acuerdo? Así que un usuario realmente puede iniciar sesión. Entonces voy a decir
muerte y luego iniciar sesión. Y luego entre paréntesis,
¿qué va a ser? Va a ser auto. Sí mismo. Colón. Y ahora, ¿qué debería pasar una vez que un
usuario haya iniciado sesión? Imprimamos un mensaje de bienvenida. Así que voy a usar
los códigos de cadena F, y luego podemos decir, bienvenidos y luego dejar que nuestro Python complete el resto de la información
ahí mismo. Así que bienvenido. Y luego nombre de usuario propio. Y ahí está, eso es
todo lo que tenemos que hacer. Y ahora, por último pero no menos importante, vamos a crear un objeto, básicamente cuenta de usuario, y
luego llamemos a nuestro método. Ar? Entonces voy a decir
admin sobre el usuario score, esto puede representar
nuestra primera cuenta que será para un admin. Va a ser
igual a qué usuario. Y ahora entre paréntesis,
tenemos que rellenar los valores de los atributos que
son username y roll. Entonces el nombre de usuario en este caso, ahora mismo va a ser Alex. ¿Bien? El nombre de usuario es Alex. Lo siento codifica, Alex,
y entonces el papel de Alex es obviamente
el de administrador. Entonces administrador. Bien. Y luego finalmente, llamemos a nuestro método. Entonces va a ser admin
scouser dot log in Brackets. Y si este programa funciona, debería decir algo así
como, bienvenido Alex. Vamos a correr. Y ahí tienes. Bienvenido, Alex. Entonces, este ha sido otro ejemplo de
cómo crear una clase, cómo definir los atributos para cada objeto en esa clase. Y luego también
creamos un método para cada objeto individual. Y luego nosotros, por supuesto, creamos un objeto real, y luego finalmente
llamamos al método asociado con el objeto. Entonces, ojalá, ahora tengas una
mejor comprensión de la OOP. Gracias por
ver el video. Te veré en la siguiente clase.
66. Encapsulación (1080p): Uno de los
conceptos fundamentales de programación orientada a objetos
OOP es algo conocido
como encapsulación, que básicamente se refiere a mantener algún tipo
de datos privados para que solo se pueda acceder
o modificar de ciertas maneras Ahora bien, esto es muy útil en
ciberseguridad porque nos
permite proteger
datos sensibles como contraseñas, ¿de acuerdo? Entonces, como ejemplo, podríamos escribir o
crear una clase y objetos que almacenarán la contraseña de
un usuario de forma privada y luego solo
proporcionar una forma de verificar si la contraseña de entrada
es realmente correcta. Así que déjame mostrarte cómo podemos
encapsular datos usando OOP. Voy a mantener
exactamente la misma clase, ¿de acuerdo? Entonces usuario de clase sin embargo, voy a cambiar el rol
atributivo a contraseña ¿Bien? Y entonces
obviamente aquí dentro, voy a cambiar nuestro rol de
self dot a password, y entonces esto
va a ser igual a nuestra contraseña también. No obstante, la única forma de decirle
a Python que, Oye, este atributo en particular, queremos que sea privado. Esto no es información pública. Esto es privado
solo para el usuario. Y podemos hacerlo pasando por
aquí delante de la P por contraseña y luego
agregando un doble subrayado Entonces esto de aquí mismo, los guiones bajos dobles le
indicarán a Python que, Oye, este es un atributo
privado Queremos encapsular
la información aquí. Así que ahora vamos a crear un método que podamos
usar para verificar
si la entrada
proporcionada por el usuario realmente coincide con la
contraseña real para ese usuario. Entonces lo que voy
a hacer ahora mismo es que voy a definir nuestro método, y llamémoslo autenticar, ¿de acuerdo? Así que define autenticar. Y ahora entre paréntesis, voy a ir con
auto y contraseña, ¿de acuerdo? Y estamos haciendo
esto porque yo aquí se va a
referir al usuario cuya contraseña realmente
queremos verificar y luego la contraseña misma
que estamos comprobando, ¿de acuerdo? Y ahora esta es la clave. Tendríamos que regresar
y ahora self dot Osco, contraseña ahora será
igual a contraseña. Entonces queremos verificar si la
contraseña que está almacenada para el usuario va
a ser la misma la contraseña que se
proporcionó como entrada. Eso es lo que esto va a hacer
aquí mismo Línea ocho. Entonces, si la contraseña coincide, línea ocho devolverá true, pero si no hay una coincidencia, va a devolver false. ¿Bien? Así que ahora necesitamos crear nuestros objetos de usuario
y asegurarnos de que, por
supuesto, cada vez que estés
creando objetos de usuario, la sangría esté afuera Debería estar en la
misma sangría
que la propia clase, No lo hagas dentro la clase sino afuera.
Tiene que coincidir, ¿de acuerdo? Entonces por aquí, no
voy a decir usuario es igual, y ahora usuario así que digamos que
necesitamos proporcionar un nombre de usuario. Vayamos con invitado, bien. Vayamos con invitado.
Algo muy sencillo invitado. Y ahora por la contraseña, voy a ir con
S y luego decir SOD,
Fish, uno, dos, tres, ¿bien? Entonces esta es la
contraseña que hemos creado para nuestro usuario invitado, ¿de acuerdo? Bien. Ahora, intentemos autenticar al usuario usando
diferentes contraseñas, ¿de acuerdo? Entonces intentemos usar la contraseña correcta y luego
la contraseña incorrecta, ¿de acuerdo? Entonces, ¿cómo vamos
a llamar a nuestro método? Voy a decir imprimir. Y ahora entre paréntesis,
el punto de usuario se autentica. Entonces estamos llamando
al método
ahora mismo para autenticar a nuestro usuario Y entre paréntesis,
queremos proporcionar la contraseña que
queremos verificar. Entonces la contraseña aquí ahora mismo, déjame
ir con la correcta. Va a ser el mismo SOD,
pez uno, dos, tres, ¿verdad Y luego Brackets, ¿de acuerdo? Si ejecuto el programa ahora mismo, y oh, la línea 12 es
un mensaje de error. Oh, deberíamos tener un soporte
extra aquí. Perdón por eso. Déjame
intentar ejecutarlo de nuevo. Y ahí tienes. Entonces ahora, dice verdadero porque
la contraseña aquí, STFish 123 es la misma la contraseña real que le
hemos dado al usuario Ahora, lo que voy a hacer
es simplemente copiar esta línea, bien, copiar, pegar. Y ahora intentemos usar
una contraseña diferente. Así que sólo voy a
ir mayúscula A, BC, uno, dos, tres, y bien, eso es todo. Entonces déjame seguir adelante ahora mismo. Ejecuta de nuevo el programa, y
ahora puedes ver que
es falso porque nuestro método ha comprobado que ABC 123
no es igual a SotFish Entonces así es como podemos encapsular datos usando la
programación orientada a objetos todo lo que
realmente tenemos que hacer
para indicar que un atributo particular es
privado que queremos encapsular es tener
los guiones bajos dobles
frente al los guiones bajos dobles
frente nombre del atributo real Entonces D's, gracias por
ver el video. Te veré en
la siguiente clase.
67. Herencia: Concepto muy importante de programación orientada a
objetos
va a ser el concepto
de herencia. Y al igual que en el idioma
inglés, sabemos que
la herencia es cuando, ya sabes, algo se transmite de
una persona a otra, ¿verdad? Así que en Python, en realidad
podemos crear versiones
especializadas de una clase sin siquiera tener que
reescribir código Básicamente podemos crear una clase
secundaria que pueda heredar atributos y métodos
de una clase padre Entonces quiero darte un
ejemplo aquí, ¿de acuerdo? Ya que estamos tratando
con el usuario de clase, obviamente en sistemas
y redes, tenemos diferentes niveles
de permisos, ¿verdad? Un usuario normal puede
acceder a ciertos tipos de archivos
y luego imprimirlos, mientras que un usuario administrador
podrá hacer
exactamente las mismas cosas que un usuario normal. Pero como son
usuarios administradores, tendrán permisos adicionales
como poder decir, por
ejemplo, editar
esos archivos, ¿verdad? Entonces lo que voy a hacer
ahora mismo es que voy a crear una clase para el usuario regular pero luego voy a crear
otra clase que será el usuario admin que
heredará los métodos
del usuario regular Entonces por aquí,
tenemos un usuario de clase, y ahora estoy definiendo
un atributo básico, y ese va a ser
el nombre de usuario, ¿de acuerdo? Así que ahora el siguiente paso será
simplemente decir nombre de usuario
self dot
es igual a igual, y luego por supuesto, el nombre de usuario. Ahora, quiero crear un método específicamente
para nuestro usuario aquí. Entonces voy a decir definir, y digamos que un
usuario normal puede iniciar sesión, ¿verdad? Pueden iniciar sesión. Entonces
voy a decir iniciar sesión. Y ahora entre paréntesis,
voy a decir yo mismo. ¿Bien? Y luego cuando
inicien sesión, vamos a hacer algo. Digamos que imprime y luego el nombre de usuario
propio ha iniciado sesión. Déjame decir tiene algo de espacio
aquí, ha iniciado sesión. Bien. Hasta el momento, lo que hemos hecho
aquí es que hemos creado la clase de usuario con el
atributo username. También hemos asignado un
método llamado Log in que básicamente
imprimirá el nombre del
usuario que ha iniciado sesión. Sin embargo, ahora voy
a crear otra clase que va a heredar no solo el atributo
nombre de usuario de la clase de usuario, sino también el método log in ¿Cómo voy a hacer esto?
Voy a venir aquí y luego notar la
intención estoy completamente fuera. Ahora voy a decir clase y ahora dar el
nombre de esta nueva clase. Entonces voy a decir admin. Y entonces incluso podemos decir usuario
admin como ejemplo. En realidad, dejemos que nos
quedemos con el administrador, ¿de acuerdo? Entonces admin, y ahora entre paréntesis, voy a decir usuario. Colón. Así que aquí mismo en la línea nueve, hemos creado una nueva
clase de un usuario llamado usuario administrador que va
a heredar el atributo, nombre de
usuario, y luego el método sesión desde la clase de usuario Voy a ir un paso
más allá y ahora agregar un método adicional
porque este es un usuario admin,
pueden hacer cosas extra. Entonces voy a decir
define vamos a llamar a
este acceso en esos llamados
logs porque son admin, pueden acceder a los logs. Entonces voy a
decir yo mismo, llama. Y ahora solo vamos a imprimir
imprimir entre paréntesis. Puedo usar cadena F y digamos algo así como el self dot. El nombre de usuario está accediendo a los registros. Y ahí está. Y ahí tienes. Ya terminamos. Entonces ahora, lo que voy
a hacer es que voy a crear nuestro usuario administrador. Entonces voy a
decir admin es igual, y ahora en capital admin usuario. Y luego entre paréntesis, vamos a
proporcionar el nombre de usuario admin. ¿Bien? Y ahora,
vamos a ejecutar los métodos. Entonces voy a decir admin
punto Iniciar sesión corchetes. Y vamos a ejecutar también
el segundo método, que va a ser admin dot, Access underscore
logs. Y aquí está. Entonces ahora veamos si esto
realmente funcionaría. Vamos a correr. Y oh, tengo otra flecha
admin Oh, sí me disculpo. Debería ser admin por aquí. Me dejé llevar. Admin es igual a admin y luego
usan el nombre admin. Sí me disculpo. Entonces déjame ejecutar
el programa una vez más. Y ahí tienes, Muy bien,
entonces admin ha iniciado sesión, y ahora Admin está
accediendo a los registros, y eso es básicamente todo. Así que no tuvimos
que especificar que el usuario admin, la clase admin va a tener el parámetro o el
atributo nombre de usuario o el método log in. Todo lo que teníamos que hacer era
indicarle a Python que, Hey, esta nueva clase admin en realidad
está heredando los atributos y métodos
de la clase de usuario original Y eso es herencia para ti. Gracias por
ver el video. Te veré en la siguiente clase.
68. Polimorfismo: Otro concepto dentro de la OOP es el concepto de polimorfismo, que básicamente se traduce en misma acción, pero Lo que pasa con el polimorfismo
es que va a permitir las clases tengan métodos
con exactamente el mismo nombre, pero luego se comporten Entonces como ejemplo, aún tratando con
la clase de usuario, podemos tener diferentes
tipos de usuarios iniciando sesión en ambos de una manera diferente. Entonces, como ejemplo,
tengamos reglas diferentes. Así que voy a
crear una clase para el usuario regular y luego una
clase para el usuario administrador, y luego van
a tener formas únicas de iniciar sesión realmente. Entonces mira esto bien. Voy a entrar
aquí ahora mismo y crear clase usuario regular. Bien. Y ahora voy a definir muy simplemente el método, iniciar sesión y auto, ¿bien? Observe que no he pasado en
ningún atributo en absoluto. Sólo voy directo
al método, ¿de acuerdo? Entonces lo que voy a hacer ahora mismo
es simplemente voy a decir imprimir ahora solo diría que el usuario
regular ha iniciado sesión. ¿Bien? Ahora, mira esto, voy a crear
otra clase, y llamemos a esto
el usuario administrador. Bien, llame, y ahora otra vez, defina y ahora el
mismo método exacto, inicie sesión yo. Pero ahora va a ser un
mensaje impreso diferente porque ahora
voy a decir admin
ha iniciado sesión. Y déjame cerrar esto, y ahí está. Entonces ahora para el polimorfismo
real, voy a hacer uso de él, vamos a asignar usuario para que sea
igual a usuarios regulares Vamos a crear nuestros
primeros objetos aquí para el usuario habitual. También vamos a crear un objeto para el usuario administrador,
y por supuesto, voy a llamar a este administrador es igual
a usuario administrador, y lo es. Así que hemos creado objetos para el usuario normal
y el usuario administrador. Ahora llamémoslos. Entonces voy a decir
usuario punto iniciar sesión. Soportes, y ahora también admin
punto Log N. Y ahí vas. Así que ahora, intentemos ejecutar el
programa, y ahí está, usuario
regular ha iniciado sesión, Admin ha iniciado sesión. Entonces este es el concepto de polimorfismo donde se pueden
tener dos clases diferentes Con el mismo método exacto, pero ese método actuará de una
manera diferente, dependiendo de qué objeto
particular
o objeto de clase esté
llamando a ese método. El método utilizado aquí obviamente
es el método de inicio de sesión. Es aplicable tanto al usuario regular de
la clase como al usuario administrador de la clase, pero va a
comportarse de manera diferente porque va a imprimir un mensaje diferente dependiendo qué objeto de clase
realmente haya iniciado sesión. Entonces eso es polimorfismo para ti. Misma acción, diferente comportamiento. Gracias por
ver el video. Te veré en la siguiente clase.
69. Avance del proyecto final: Así que bienvenido al proyecto final, nuestro proyecto final de Python. Y juntos,
vamos a construirnos un sistema de
registro de usuarios muy potente. Ahora, ya hemos construido algo
similar, pero esto va a
ser mucho más mejorado. Ahora he ocultado el código. No quiero que
veas el código todavía. Entonces lo que voy a hacer es
que voy a ejecutar el programa para que
veas de qué se trata. Entonces tenemos el sistema de
registro de usuarios, tres opciones principales,
registrarse, iniciar sesión o salir. Entonces voy a intentar registrarme y voy
a introducir un nombre de usuario, vamos con Alex, ¿de acuerdo? Y voy a comprobar esto, ¿de acuerdo? Voy a ir con
una contraseña bastante poderosa. Pero ahora échale un
vistazo a esto, ¿de acuerdo? Dice que la contraseña
no es lo suficientemente fuerte. La contraseña debe tener al menos
ocho caracteres. Entonces sí tenemos una herramienta de verificación de
contraseñas. Pero mira esto bien. Voy a ir otra vez a
registrarme, ¿de acuerdo? Déjame bajar
aquí, presiona uno. Ingresa un nombre
de usuario diferente esta vez. Déjame ir con Boris, ¿de acuerdo? Y ahora mira esto. Bien, voy a
ir con Bis 123. Boris. Entonces esto es bastante largo. Se trata de más de
ocho personajes. Presiono Enter. Pero luego dice contraseña,
no es lo suficientemente fuerte. La contraseña debe incluir
al menos un símbolo especial. Entonces nuestra herramienta de verificación de contraseñas va a verificar
cuatro criterios principales. Se va a
asegurar que la contraseña al menos ocho
caracteres de largo, tenga una
letra mayúscula, tenga un número, y también un símbolo especial, ¿bien? Así que voy a intentar
registrarme de nuevo, ¿de acuerdo? Esta vez, voy a
ir con el nombre de usuario Alice. Y ahora vamos con una contraseña
real real. Voy a ir con Alice uno, dos, tres con el símbolo add. Y ahí tienes, dice, Usuario tuvo éxito, y ahora voy a
intentar iniciar sesión. ¿Bien? Échale un vistazo a esto.
Esto te va a encantar, voy a iniciar sesión como Alice. ¿Bien? Y ahora contraseña, Alice, uno, dos, tres,
con el símbolo add. Y ahora, Login fue exitoso,
pero échale un vistazo a esto. Tenemos un menú de inicio de sesión posterior. Por lo que nuestros usuarios de inicio de sesión
podrán acceder a un menú de inicio de sesión donde podrán ver sus registros o
simplemente cerrar sesión. Entonces ahora, yo como Alice, si quería ver mis bitácoras, presiono uno, y ahí tienes. Dice ahora mismo que
los registros para el usuario Alice. Alice se
registró con éxito en esta fecha, y luego Alice también inició sesión
con éxito. Así que vamos a
implementar básicamente un sistema de auditoría que hará seguimiento de cada
usuario y cada actividad en el sistema. Además, échale un vistazo a esto, o vamos a tener el archivo
TXT de los usuarios que
almacenará todos los nombres de usuario y sus
contraseñas correspondientes, pero échale un vistazo a esto. Las contraseñas
van a ser hash. No van a
estar en texto plano. Vamos a implementar
una función hash para hash de las contraseñas
por seguridad Entonces puedes ver ahí
mismo,
vamos a implementar
algunos hashing, también, pero eso no es
también vamos a crear un archivo de registro de auditoría
que hará un seguimiento de todos los registros en el sistema Así puedes ver ahora mismo el campo de
registro para Alex, el campo registro para Boris, Ale se
registró con éxito, y luego Ale también se
conectó con éxito Entonces este va a ser un sistema de
registro avanzado integral con una herramienta de verificador de passwor, y además va
a tener hash toda la contraseña será hash así como una Así que aquí está la cosa, ¿de acuerdo? Te voy a proporcionar un documento de texto con
algunos consejos
y sugerencias útiles si
quieres intentar escribir este programa
por ti mismo, ¿de acuerdo? Así que adjunto a este video, te
voy a proporcionar un archivo de texto con todos los consejos y sugerencias útiles. Te voy a decir el proceso
general de pensamiento. Y si eliges
no hacer eso, si solo quieres
trabajar conmigo, lo que he hecho es que he dividido todo
este proyecto en
ocho mini proyectos. Entonces voy a desglosarlo paso a paso a paso. Vamos a estar agregando
las características una por una, una por una, una por una. Y ojalá, la forma en que me he
acercado
a descomponer este proyecto va a hacer que sea más fácil para ti entender y también
poder seguir. Entonces, como siempre, si
tienes alguna duda, tal vez estés tratando de construir el programa por ti mismo
y estás atrapado en alguna parte, siempre puedes comunicarte conmigo, e intentaré ayudarte y ayudarte de cualquier
manera que pueda. Así que estoy muy emocionada
de trabajar
contigo en la construcción de este sistema de registro de
usuarios. Sin perder más
tiempo, comencemos.
70. Parte 1: creación de la interfaz de usuario: Bien, entonces comencemos. Y lo primero que
vamos a hacer es crear
la interfaz de usuario que
permita al usuario elegir entre las opciones
de registro, inicio de sesión y salida, ¿bien? Entonces llamemos a esta función
la función principal. Entonces voy a decir definir corchetes
principales, dos puntos. Y ahora, digamos que si bien es cierto. Bien, así que mientras el
programa se esté ejecutando, vamos a mostrar las opciones del menú. Entonces voy a decir,
antes que nada, impresiones, y podemos decir, número uno, déjame agregar
mis códigos ahí mismo. Entonces voy a decir opción
número uno, registro de puntos. Bien. Cerremos la columna. Y luego vamos
a imprimir la opción número dos, a punto, Iniciar sesión. Y luego la opción número
tres, opción muy, muy, muy aburrida,
simplemente salir. ¿Bien? Todo bien. En realidad, ya sabes, vamos
a imprimir otra declaración
en la parte superior, algo así como un mensaje de bienvenida. Así que vamos a imprimir
digamos bienvenido al sistema
de registro de usuarios. Bien. Y ahí tienes. Bien, así que tenemos todas las
opciones establecidas. Ahora, pidamos
al usuario que nos brinde una opción. ¿A qué opción
en particular van a querer ir? Voy a llamar a
la opción variable para almacenar la opción particular. Entonces voy a decir insumos,
y luego digamos, ¿qué le gustaría hacer? Bien. Y
ahí está. Todo bien. Entonces, una vez que el usuario ha
brindado su opción, necesitamos crear escenarios asignados a cada uno de ellos. Entonces voy
a comenzar por el primero
de aquí y decir, yo nuestra elección es igual a la
opción número uno, vamos a imprimir, digamos, registro de
registro. Seleccionado. Bien. Ahora, obviamente, nada más
va a pasar por ahora. Añadiremos la
funcionalidad real más adelante. Pero pasemos
a la siguiente opción. Entonces voy a decir LIF, elección es igual, y luego la opción número dos Agreguemos dos puntos. Entonces, ¿qué
va a pasar aquí? Podemos decir imprimir,
y luego podemos decir iniciar sesión seleccionado Bien. Y ahora agreguemos la
opción número tres, elección
AF equivale a la opción
número tres y dos puntos. Podemos decir simplemente imprimir, y salir del sistema ¿Bien? Y creo que
esto debería estar bien. Así que recuerda, también
habrá necesidad de agregar la sentencia break
should en caso el usuario decida elegir una
opción que no existe. Entonces voy a entrar y
decir break y ahora break, entrar else en nuestra columna, y ahora ya podemos imprimir. Digamos elección inválida, por favor inténtelo de nuevo.
Bien, esto me gusta. Elección no válida,
inténtelo de nuevo. Y ahí está. Bien, así que sigamos
ahora mismo para ejecutar el programa. Entonces soy alguien que va a
decir principal y ahora corchetes, y veamos qué va a pasar. Sigamos adelante y
ejecutemos el programa. Y luego te vas, Bien, probemos la opción número uno. ¿Bien? Registro seleccionado.
Opción número dos, Login seleccionado,
opción número tres. Saliendo del sistema.
Bien, hasta ahora tan bien hemos agregado el primer
componente de nuestro programa. Hemos agregado la interfaz
de usuario. Entonces Jamin siguiente Video
comenzaremos ahora a abordar cada opción a la vez, comenzando con la función de
registro.
71. Parte 2: añadir la función de registro de usuario: Regresa. Entonces ahora pasemos a la primera función principal para el programa que permitiría al usuario registrarse. ¿Todo bien? Así que vamos hasta
la cima aquí y vamos a empujar la
función de la interfaz de usuario hasta el final, y vamos a subir aquí. En realidad, sólo
voy a agregar una nota y decir función de registro. Bien. Bien, entonces ¿cómo
llamamos a la función? Digamos registrar usuario de
subrayado, ¿verdad? Registrar usuario, soportes. Agreguemos dos puntos Bien, entonces queremos aceptar el nombre de
usuario y una contraseña del usuario. Entonces, vamos a pedirles
que hagan eso. Todo bien. Entonces voy a decir nombre de
usuario es igual y ahora entrada y corchetes, digamos, un nombre de usuario. Colón. Bien. Y luego vamos a pedirles
la contraseña también. Entonces contraseña es igual, entrada, y luego entre paréntesis, Ingrese una contraseña, dos puntos, y ahí va. Bien, así que
ahora mismo, una vez que el usuario haya proporcionado el nombre de usuario
y la contraseña, nos gustaría
almacenarlos en un archivo. Podemos llamar al archivo usuarios
punto TXT como ejemplo, ¿bien? Entonces lo que vamos a hacer es que vamos a decir
con y ahora abrir. ¿Bien? Recuerda, necesitamos esta
función para crear nuestro archivo. Entonces ahora agreguemos el
nombre del archivo. Voy a
llamarlo usuarios punto TXT. Y ahora, habilitemos
el modo append. Entonces voy a decir A. Bien.
Y entonces como ¿qué como archivo? Colón. Todo bien. Y ahora podemos usar
las funciones adecuadas. Diré archivo punto a la derecha. Y ahora entre paréntesis, podemos usar nuestra cadena F, y luego agreguemos llaves
geniales, nombre de usuario Vamos a cerrar eso, y luego también
podemos agregar dos puntos para separar la contraseña
del nombre de usuario. Entonces Cole se pone de nuevo, y luego podemos
agregar nuestra contraseña Y luego por si acaso, podemos hacer el
slash hacia atrás y luego N para que cada usuario Información se almacene en
una línea separada Cada credencial de usuario se
almacenará en una línea separada,
y ahí está Bien, todo lo que tenemos que hacer en
este momento es que podemos
imprimir un mensaje sencillo que
diga algo así como imprimir, y luego podemos decir, el
registro de usuarios fue exitoso. Bien. Y ahí está. Bien, entonces, ¿cómo integramos ahora nuestra función de registro con
la propia función principal? Lo que vamos
a hacer ahora mismo es que vamos a llegar hasta aquí y decir, yo elijo es igual a uno, entonces podemos quitar esto. Bien, ya no necesitamos
esta declaración impresa. Y sólo vamos a
llamar a la función. Y la función que
creamos aquí fue lo que registramos subrayado usuario Aquí mismo, solo diré registrar
usuario de subrayado, y luego corchetes Y luego ahí está. Entonces ojalá, esto debería funcionar. Sigamos
ahora mismo y probémoslo. Entonces voy a ejecutar el programa. ¿Bien? Número uno, queremos
registrarnos, pulse Intro. Entrar, nombre de usuario. Voy
a ir con Alex. Contraseña. Voy a ir
con Alex otra vez, ¿de acuerdo? Sólo para una prueba. Entra y bien. El registro de usuarios
fue exitoso, y tenemos usuarios dot
textfile aquí Y si lo abro, increíble, puedes ver que dice Alex Alex. Tan fantástico. Se puede
ver ahora mismo que en realidad está funcionando hasta ahora
tan bien. Únete a mí en la siguiente lección
donde ahora creamos la función que
permitirá a nuestros usuarios iniciar sesión.
72. Parte 3 añadir la función de inicio de sesión: Bueno, vuelve. Así que ahora, agreguemos la función para
permitir que nuestros usuarios inicien sesión. Entonces voy a decir definir, y vamos con el inicio de sesión en la partitura
será el nombre de usuario. Agreguemos una columna. En realidad,
agreguemos una nota, ¿de acuerdo? Y solo podemos decir función de inicio de
sesión. Y ahí tienes. Bien. para que el usuario inicie sesión, van a requerir el
nombre de usuario y la contraseña. Así que comencemos
diciendo que el nombre de usuario es igual, y luego los corchetes de entrada, los códigos ingresan su nombre de usuario. Colon. Bien. Y
luego también podemos agregar la contraseña igual a entrada, corchetes, ingresa tu contraseña, y ahí vas. Bien. Ahora, para
verificar que el nombre de usuario
y contraseña sí existen, vamos a tener que
abrir a nuestros usuarios el archivo dot TXT. Entonces voy a decir con abierto, y ahora entre paréntesis, ¿cuál es
el nombre del archivo? Se trata de usuarios punto TXT. Y entonces, ¿cuál es la modalidad con la
que vamos? Vamos con el modo de lectura. Porque queremos
leer del archivo, y voy a
decir como archivo, dos puntos. Y ahora, vamos a crear
una variable llamada usuarios que aceptaría la función de líneas rojas punto
archivo. Porque recuerden,
vamos a tener que leer línea por línea de cada usuario en los usuarios
puntean el texto del archivo. Entonces voy a decir usuarios es igual
a archivo punto leer líneas, y ahora corchetes,
y ahí está. Entonces ahora necesitamos verificar si credenciales de
la entidad
coinciden con algún registro almacenado. Entonces, ¿qué vamos a hacer? Vamos a
crear un bucle de cuatro. Entonces voy a decir cuatro. Usemos la variable
usuario en usuarios. ¿Bien? Entonces ahora,
¿qué queremos verificar? Queremos verificar el
nombre de usuario y luego la contraseña. Así podemos crear dos
variables aquí. Podemos ir con el
bien almacenado, almacenado en la partitura, nombre de usuario, y luego coma, también
podemos ir con almacenado
en la contraseña de puntuación Let crea dos
variables para representar el nombre de usuario almacenado y
luego la contraseña almacenada. Y ahora, cómo comprobaríamos
necesitamos primero que nada, verificar para ver si el nombre de usuario es correcto y luego
también la contraseña. Pero ahora échale un
vistazo a esto, ¿de acuerdo? Los usuarios puntean textifle tal como es. Tenemos a Alex y
luego punto de colon ALC. Entonces tenemos que
averiguar una manera de cómo podemos separar el nombre de usuario
de la contraseña, y sabemos que es el símbolo de
dos puntos lo que los
separa, ¿de acuerdo? Entonces podemos usar la función split para separar el
nombre de uso y la contraseña. Pero también podemos usar
la función strip. Recuerda la función de tira. Lo usamos para eliminar
cualquier carácter blanco o espacios vacíos,
cosas así. ¿Bien? Así que volvamos a entrar aquí. Entonces lo que vamos
a hacer ahora mismo es voy a decir usuario, y ahora vamos a agregar la función strip para eliminar todo el
espacio necesario del nombre de usuario, bien, nuestros corchetes, y ahora
voy a agregar la función split. ¿Y por qué estamos dividiendo el nombre de usuario y la contraseña? Va a ser el colon, y ahí tienes. Entonces vamos a
dividir el nombre de usuario y la contraseña por dos puntos. Entonces a partir de aquí
ahora mismo, podemos checar. Podemos decir si el nombre de
usuario es el mismo que lo que el nombre de usuario de
subrayado almacenado, y qué contraseña es igual a lo que la contraseña de subrayado.
¿Qué queremos hacer? Queremos imprimir y decir Iniciar sesión. Exitoso y ahí vas. Impresionante, impresionante, también.
Y luego a partir de aquí, simplemente
podemos regresar
por ahora, bien. Más adelante, agregaremos funcionalidad
adicional. Pero por ahora,
volvamos y volvamos al
inicio del programa. Así que vamos a
salir de la función después de un inicio de sesión exitoso. Y claro, también podemos imprimir si acaso algo
no salió correctamente. Podemos imprimir nueve corchetes. Simplemente podemos decir inválido
usando n o contraseña. Y ahí tienes. Déjame agregar algo de espacio
aquí, y ahí vamos. Bien, entonces ojalá
esto funcione. Permítanme
integrarlo en la función principal. Entonces lo que queremos
hacer ahora mismo es donde dice la
elección AF número dos, podemos eliminar la
sentencia print y ahora simplemente agregar el nombre
de la función, que es login en el
usuario score y ahora corchetes, y ahí está. Bien. Dedos cruzados. Vamos a ejecutar el programa. Y vamos a ver. Voy a ir
directo a iniciar sesión, porque
ya hemos creado el usuario y contraseña de
Alex. Entonces el nombre de usuario es Alex. La contraseña es Alex,
y ahí tienes. Impresionante, inicia sesión con éxito. Intentemos ver si
aceptaremos un nombre de usuario diferente
que no existe. Entonces voy a ir con Log In, y vamos con Philip. Ingresa contraseña, ordena,
pez, y ahí vamos. Dice nombre de
usuario o contraseña inválidos, así que está funcionando,
increíble, increíble. Así que hemos agregado con éxito
la función de registro. También hemos agregado con éxito
la función de inicio de sesión. Así que ahora únete a mí en
el siguiente video donde vamos a
avanzar el programa
introduciendo el
verificador de contraseñas que asegurará que la contraseña creada cumpla con
ciertos criterios de fortaleza. Te veré entonces.
73. Parte 4: añadir la herramienta de comprobador de fortaleza de la contraseña: Bueno, vuelve. Entonces ahora necesitamos implementar la herramienta
de verificación de contraseñas. Hasta ahora tan bien, nuestros usuarios, pueden registrar
cuentas, pueden iniciar sesión. Pero queremos asegurarnos que las contraseñas
que usaron para crear sus cuentas
en primer lugar realmente
lo suficientemente fuertes. Y tenemos una lista de criterios. Queremos asegurarnos de
que la contraseña tenga al menos ocho caracteres. Contiene una letra mayúscula. Contiene un número, y también contiene
al menos un símbolo especial. Ahora bien, los símbolos son lo que
he escrito
aquí, ya pueden ver. Tengo todos ellos listados. Entonces lo que voy a
hacer es en lo más alto, bien, sigamos adelante. Déjame cortar esto primero que
nada, voy a cortar eso. Entonces vamos
a tener que importar una biblioteca, que va a ser la biblioteca de expresiones
regulares. Entonces en la parte superior, digamos importar
y luego R E. ¿Bien? Así que permítanme agregar
una nota que diga Importar para
expresiones regulares. ¿Bien? Todo bien. Así que ahora, vamos a añadir una nota, y voy a decir contraseña función de comprobación de
contraseña. Bien. Creo que está bien. Función de comprobador de contraseñas. Bien, así que vamos a crear
el nombre de la función. Entonces voy a llamarlo definir, y luego podemos decir que está en la puntuación fuerte en
la contraseña de puntuación. ¿Bien? ¿Qué tal eso? Y
ahora, por supuesto, dentro, vamos a
aceptar una variable, que será la propia contraseña
real. ¿Bien? Y agreguemos
dos puntos. Ahí vas. Todo bien. Empecemos
a sumar los criterios. El primer
criterio aquí
será la longitud de la contraseña. Entonces podemos decir si y
ahora la función len, que representará la longitud
de lo que fuera de la contraseña. ¿Bien? Entonces, si es menor a
ocho, agreguemos nuestro colon. ¿Qué vamos a decir?
Vamos a devolver falso. Bien, vamos
a devolver falso. En realidad falso F, coma falsa. Y luego podemos proporcionar
algo así como una retroalimentación. Decirle al usuario que, Oye, tu contraseña
debe tener al menos ocho caracteres de longitud.
Entonces hagámoslo. Bien. Entonces fíjate ahora mismo
dos cosas que sucedieron. En primer lugar, estamos regresando fals, lo que significa que la contraseña no es lo suficientemente
fuerte, y luego también estamos proporcionando
una retroalimentación también Tengan eso en mente, va
a ser muy, muy importante. Pasemos al
siguiente criterio. Entonces voy a
bajar aquí y luego decir si y ahora nada de búsqueda RE, queremos buscar
usando el módulo RE Déjame asegurarme de que lo escribí
correctamente, Investigación. Y ahora entre paréntesis, queremos buscar
para ver si hay alguna letra mayúscula
dentro de la cadena. ¿Bien? Entonces estamos diciendo buscar
y ahora Roy ahora códigos, códigos
únicos, agreguemos nuestros corchetes. ¿Qué estamos buscando?
Estamos buscando de la A a la Z. Entonces esto de aquí es un método que usa la biblioteca de
expresiones regulares, queremos buscar a través de
nuestra contraseña para
verificar si hay alguna
letra mayúscula entre la A y la Z.
Entonces de la A a la Z, y luego la coma y
luego ¿Bien? Para que podamos devolver el
pelaje falso y ¿por qué falso? Porque dijimos, Si no. Entonces, si el programa busca
a través de la contraseña y no encuentra una letra mayúscula de la A a la Z, no va a ser. Así que vamos a devolver false, y luego podemos proporcionar
lo que es una retroalimentación. Por lo que puedo decir que la contraseña
debe
incluir al menos una letra
mayúscula ¿Bien? Y déjame agregar
el punto ahí mismo, y ahí tienes. Bien, ahora, ¿puedes intentar
escribir el código para buscar para ver si hay un número 0-9
en la contraseña? ¿Bien? Podemos decir, si no, punteamos la búsqueda. Bien. Y luego entre paréntesis
R y ahora en códigos simples, voy a abrir un nuevo
soporte ahora 0-1 a nueve Y ahora estamos
buscando la contraseña. Queremos saber si la
contraseña tiene un número 0-9. Y claro, si no es así, vamos a devolver falso. Y entonces podemos decir que la contraseña debe incluir al menos un dígito. Permítanme cambiar
los dígitos por número, en realidad. Bien. Y ahí tienes. Así que hemos comprobado la
longitud de la contraseña. Hemos comprobado para asegurarnos de
que tenga una letra mayúscula. Hemos comprobado para asegurarnos de
que tenga al menos un número. Por último, pero no menos importante,
verifiquemos para ver si tiene un símbolo especial. Entonces el último,
vamos a decir,
si no, re búsqueda de puntos. Y ahora entre paréntesis
están los códigos singulares. Y ahora vamos a abrir
los soportes principales. Y ahora voy a pegar
todos los símbolos especiales. Oh, hay
un buen número de ellos,
en realidad, ¿de acuerdo? Entonces
voy a añadir eso. Ahora coma y ahora contraseña. Bien, agrega dos puntos. Y ahora, si no tenemos eso
voy a regresar cae. Bien. Y luego códigos, diré contraseña debe incluir al
menos un símbolo especial. Permítanme cambiar de
carácter a símbolo. Simba codifica, y ahí está. Bien, entonces hemos comprobado
los cuatro criterios principales. Sin embargo, ¿y si la contraseña que se creó
es realmente buena? Es una contraseña segura. Entonces para eso,
voy a venir aquí y voy a
devolver la verdad. ¿Bien? Voy a devolver verdad, e incluso podemos
imprimir algo que
diga que la contraseña es fuerte. Y ahí tienes. Bien. Así que solo para darte una recapitulación muy rápida de lo que
hemos hecho aquí, importamos la biblioteca de
expresiones regulares porque queremos usar un método
particular de función, que es la
función de búsqueda para ir a través de
la contraseña y verificar tipos
específicos de criterios Entonces, antes que nada, verificamos
la longitud de la contraseña. ¿Es menos de ocho? Si es menor a ocho, devuelva false y luego
proporcione retroalimentación que diga, contraseña debe tener al menos
ocho caracteres de longitud. Y ahora queremos
buscar para ver si hay una
letra mayúscula entre la A y la Z. Entonces usamos el método
e búsqueda de puntos, y luego entre paréntesis R, códigos, y luego los corchetes A
a Z, y luego contraseña Y luego proporcionamos
la retroalimentación, y luego hicimos lo
mismo
para buscar al menos un número, y luego hicimos lo
mismo para buscar al
menos un símbolo especial. Y luego finalmente, si se aprobaron los
cuatro criterios, volveremos true, y entonces diríamos que la
contraseña es fuerte. Entonces, ahora que tenemos los criterios enumerados para
la fortaleza de la contraseña, ahora
necesitamos
integrarla dentro la
función de registro y
asegurarnos de que antes de que se registre la
cuenta del usuario, la contraseña realmente
pase la prueba. Entonces aquí mismo, una vez que
le hayamos pedido al usuario que nos proporcione, el nombre de usuario y la contraseña, el nombre de usuario y la contraseña,
antes de comenzar a abrir el archivo dotexti del usuario
para almacenar las credenciales,
introduzcamos el verificador de
contraseñas Así puedo crear una
variable llamada es válida. Vamos a verificar si la contraseña es realmente válida. Entonces también, hemos estado trabajando con el
feedback feedback o mensaje, puedes cambiar la
variable si quieres, pero voy a
ir con feedback. Voy a decir que es válido,
subraye los comentarios, y los voy a pasar a la función que
solíamos crear El alcance de la contraseña es
lo que es fuerte, subraye la contraseña y luego entre paréntesis, la contraseña. Bien. Entonces ahora podemos decir
si no es válido, así que si no es válido. Entonces, si la contraseña que nos
proporcionaron no es lo suficientemente fuerte simplemente
podemos imprimir, y luego podemos decir que la contraseña no
es demasiado espacio. La contraseña no es lo suficientemente
fuerte. Bien. Y entonces, ¿qué más podemos hacer? Podemos imprimir los
comentarios diciendo: Oye, tu contraseña necesita al
menos un número, o tu contraseña debe incluir al
menos una letra de gas superior. Para que pueda bajar aquí, agregar otra declaración impresa y simplemente pasar
el feed back. Y ahí tienes. Por último pero no menos importante, simplemente
vamos a regresar y ahí van ustedes. Entonces esa es la forma en que podemos implementar la herramienta de
verificación de contraseñas. Hemos enumerado los
criterios, longitud, número, letra de
acase, símbolo, y ahora donde tienes la función de
registro, hemos agregado, Bien, si la
contraseña no es válida, di que no es
lo suficientemente fuerte y luego también proporciona la retroalimentación también De lo contrario, simplemente regresa. Entonces ahora vamos a revisar para
ver si está funcionando. Ojalá, debería.
Así que vamos a correr. Bien, me voy a registrar. Usa un nombre, digamos, Bob. Contraseña, voy a ir
con mayúscula LISA N seis, uno, dos, tres, B V. Es Enta y Impresionante. Dice que la contraseña
no es lo suficientemente fuerte. La contraseña debe incluir
al menos un símbolo especial. Bien, voy a abrir el textifle punto del
usuario
y asegurarme de que,
Bien, asegurarme de que Bob
no fue Impresionante. Volvamos. Y ahora, intentemos crear
una cuenta real real. Entonces llamemos a Alice. Contraseña, P O P tres, cuatro, SDR, y luego
el símbolo add Creo que esto debería
ser lo suficientemente fuerte. Ahí vas. Bien,
increíble usuario. Tiene éxito. Y ahora, si vuelvo a mis usuarios
TXT, ahí tienes. Ahora tenemos a Alice y su
contraseña. Entonces enhorabuena. Hemos mejorado nuestro programa, nuestro software para incluir ahora
un verificador de contraseñas, también. Únete a mí en el
siguiente video donde
vamos a seguir adelante y también aprender cómo podemos cifrar nuestras contraseñas.
Te veré entonces.
74. Parte 5: hashing de las contraseñas de usuario: Bueno, vuelve.
Así que ahora agreguemos una
característica de seguridad más a nuestro programa. Y aquí dentro, vamos
a incluir hashing. Vamos a hash up pwords haciendo
uso del SHA dos,
cinco, seis, el algoritmo
hash seguro con, por
supuesto, un
tamaño de datos de 256 bits Entonces para ello, vamos a tener que
importar otra biblioteca. Y éste va
a ser el hash lib. Déjame solo agregar un nodo
aquí y también lo importo para hashing. Y ahí tienes. Todo bien. Ahora, agreguémoslo en la parte superior aquí la función para realmente hash la contraseña. Permítanme agregar una
función de nodo a las contraseñas hash. El nombre de la función,
puedo decir definir y podemos ir con contraseña
hash. Ahora, por supuesto,
dentro de los paréntesis, vamos a estar trabajando
con el parámetro de contraseña y luego alimenté en mi columna. Voy a echar un vistazo
a esto para hash la contraseña, simplemente
puedes decir return Now, el nombre de la
función en sí en el módulo hashlib, su hashlib Ahora punto sha dos, cinco, seis. Ahora entre paréntesis, ¿qué estamos
hash? Es la contraseña. Ahora voy a usar
el método llamado código, abrir nuevo par de corchetes, cerrar los paréntesis anteriores y ahora punto ahora finalmente podemos
tener hex diigest agregar corchetes de
cierre de nuevo, y ahí está Esta es una línea particular
que puedes memorizar. Esta es la función
que realmente hará hash up contraseñas haciendo uso
del módulo hashlib Todo lo que tenemos que hacer
ahora mismo de manera muy sencilla será
integrarlo en la función de
registro real. Vengamos todo el
camino hasta aquí al final, donde la contraseña
fue exitosa, aquí donde dice
imprimir retroalimentación, regresar justo antes de comenzar a
escribir la contraseña a los
usuarios o enviar un mensaje de texto al archivo, ahora
vamos a hash. Después de la declaración escrita, voy a añadir una
pequeña nota y
podemos decir hash la contraseña Todo bien. Entonces lo que queremos hacer en este momento
es muy, muy simple, podemos crear una variable llamada
hash underscore password, y luego podemos pasar la contraseña real
que acabamos de hash Voy a decir hash en la
contraseña de puntuación y ahora entre paréntesis, muy simplemente pasar palabra
y ahí está. Todo lo que tenemos que hacer de
manera muy simple es donde estamos
escribiendo la contraseña. En lugar de la contraseña
original, ahora
tendremos que escribir
la contraseña hash Aquí dice archivo o
escribe F, nombre de usuario. Ahora aquí en lugar de contraseña, vamos a cambiar
eso a la variable hash en la palabra de pase de puntaje, y ahí está hemos agregado hash
con éxito Veamos si esto realmente
funcionaría. Voy a seguir adelante
ahora mismo y ejecutar el programa. Vamos a registrarnos. Voy a añadir un
nuevo nombre aquí. Voy a llamar a éste, digamos, David. Bien, contraseña. Voy a ir con una
contraseña muy segura aquí,
SOD, peces, SOD,
peces , y luego 234 a,
y luego símbolo de esterics, ahí Ahora vamos a abrir los
usuarios de textifle y C y maravilloso.
Ahí vas. Esta de aquí es la versión hash de la contraseña
de David, que es SOT fish, 234 at
y el símbolo Asterics Tan maravilloso, hemos agregado
hashing a nuestro programa. Se está volviendo cada vez más
avanzado, y ahora salta en la siguiente
lección donde vamos a agregar nuestra auditoría para incluir
CU entonces. Entonces solo quería
darte una actualización rápida. Sí, acabamos de agregar
la función hash. Sin embargo, cuando lo probamos, podrías notar
que no funciona. Entonces, si iba a ir por
aquí ahora mismo y quería registrar un
nuevo usuario y le dije, llamemos al nuevo
usuario Victor, ¿verdad? Víctor. Y luego
agregué una contraseña, Victor 123, y luego VC y luego el símbolo del anuncio,
y presiono Enter. Dice que el
registro de usuarios fue exitoso. No obstante, si intento volver a
iniciar sesión como Victor, entonces tengo el nombre de usuario. Y ahora si escribo la
contraseña, Victor 123, Vc en verá
ahora mismo que dice nombre de
usuario o contraseña inválidos. Entonces, por alguna razón, la función de inicio de
sesión
no es capaz de detectar que el nombre de usuario coincide con
la contraseña. Y esta es una de
las razones por las que realmente quieres probar tu código cada vez que hayas
agregado nuevas funcionalidades. Entonces me di cuenta que
por aquí en la línea 60, donde dice, donde
tenemos la función de inicio de sesión, dice
que si nombre de usuario es igual a nombre de usuario
almacenado y contraseña
igual a contraseña almacenada, entonces podemos permitir que el usuario
inicie sesión con éxito. Se puede ver ahora mismo
que esto no va a funcionar porque como el código
está escrito ahora mismo, es comparar la contraseña con el formato de texto plano y no la versión cifrada o
la versión hash más bien Por eso estamos
teniendo el tema. Así que se supone que debemos
entrar ahora mismo y decir, tachar un nombre y ahora
enfatizamos la contraseña de
subrayado hash Y ahora entre paréntesis, contraseña. Entonces esto de aquí mismo, ahora le
estamos diciendo al programa y diciéndole a Python que, Oye, compara la contraseña hash del usuario y no
la versión simple Entonces debería funcionar ahora mismo. Si tuviera que regresar y vamos crear una nueva cuenta
para el usuario. En realidad, paremos
el programa, ¿de acuerdo? Y voy a
volver a ejecutarlo todo de nuevo. Entonces ahora déjame
registrar un nuevo usuario, llamar al usuario Mac
y luego Mac uno, dos, tres en Mac
para obtener la contraseña. Y ahora intentemos volver a
iniciar sesión como Mac. Entonces voy a decir Mac. Y ahora Mac uno, dos, tres en Mac. Y ahora se puede ver que el inicio de sesión
fue, de hecho, exitoso. Entonces esto es, nuevamente, un recordatorio que cada vez que
añades nuevas funciones y nuevas líneas de código, quieres probar antes de comenzar a agregar más y más líneas
de código a tu programa. Así que por favor sigue adelante y
actualiza la línea donde dice, Si usas nombre de
usuario y contraseña de inicio de Nemicol, quieres asegurarte de que es la versión hash de la
contraseña que estamos Gracias por mirar,
y por supuesto, veré en
la próxima clase.
75. Parte 6: añadir la herramienta de auditoría: Bienvenido de nuevo. Así que ahora vamos a agregar una característica realmente genial, que será la función de la herramienta
de auditoría donde podemos
realizar un seguimiento de todas las actividades
en nuestro sistema desde los usuarios, iniciar sesión y crear cuentas
y cosas así Entonces sigamos adelante y hagamos eso. Y para que esto suceda, necesitamos importar una
biblioteca y un módulo especiales, que va a
ser la fecha y hora. Así que voy a entrar
aquí y voy a decir desde la biblioteca diurna. Importemos el módulo
diurno. ¿Bien? Y puedo agregar aquí
una nota que diga entrada para fecha y hora. Bien. Ahora, vamos a
crear nuestra función, y ¿dónde podemos colocarla? ¿Sabes qué? Coloquemos la función justo antes de la función de
registro, ¿de acuerdo? Así que voy a venir
hasta
aquí, agregar la nota, y podemos llamar a esta
la función para registrar las actividades de los usuarios. Ley de Actividades. No lo deletreó
correctamente, Activts. Bien. Bien, voy a
llamar a esta función definida, y luego registrar el evento de subrayado Ese va a ser el
nombre de la función. Y entonces el parámetro por
supuesto será evento. Bien. Agrega un colon, y bien. Entonces aquí es donde va a suceder la
magia. Pasemos la fecha y
hora reales a una variable
llamada sello de tiempo. ¿Bien? Voy a decir que la marca de
tiempo es igual. Y ahora vamos
a hacer uso de una función del módulo
diurno. Esta función se llama punto
datetime ahora. ¿Bien? Entonces esta es la
función que recuperará la fecha y hora reales, ¿de acuerdo? Pero ahora voy a agregar un
método aquí punto STR FT. Este método de aquí es
lo que vamos a utilizar
para formatear realmente
la fecha y la hora. Entonces si queremos
mostrar el año, el mes, el día o
tal vez solo el día del mes. Y luego la hora, a lo mejor
queremos mostrar la hora, el minuto, el segundo,
cosas así. Entonces vamos a
usar este método, el método STR FT. Y ahora entre paréntesis,
necesitamos indicar
cómo queremos que se formatee la fecha y la
hora. Entonces por dentro, voy
a agregar mis abrigos. Entonces hagámoslo así, bien. Vamos a exhibir el año, el mes, el día. Eso será para la fecha. Y luego para la
hora, simplemente
mostraremos la hora minuto
y luego la segunda. ¿Qué tal eso?
¿Bien? Suena bien. Entonces para hacer esto, voy a usar el
símbolo de porcentaje, y ahora Y. Esto representará el año y luego podremos agregar menos
y luego porcentaje, y luego M para el mes, y luego menos otra vez, porcentaje para qué para el
día que será D. ¿Bien? Y ahora un espacio, y ahora para el tiempo
real mismo, voy a ir de
nuevo, porcentaje, H por la hora, ¿de acuerdo? Y ahora en vez de los menos, podemos usar el colon
porque creo que es mejor usar dos puntos siempre que
estés lidiando con el tiempo real, en mi opinión Podemos usar colon y luego para el minuto y
luego dos puntos otra vez, y luego porcentaje o S, y ahí vas. Este es el formato,
tu día del mes, y luego la hora
minuto y el segundo, y creo que debería estar bien. Ahora tenemos que hacer
ahora mismo es que ahora necesitamos comenzar
a iniciar sesión en
todas estas actividades. Bien, entonces lo que vamos a hacer es para la función de
registro, cuando el usuario se haya registrado, necesitamos registrar el evento, ¿de acuerdo? Ahora, tenemos que
venir aquí y decir con open porque queremos crear un archivo de texto real que
represente el registro de auditoría. Entonces voy a decir con abierto. Y luego entre paréntesis,
llamemos a la auditoría de archivos. En el registro de puntuación. Subraya log dot TXT. Entonces este será el
nombre del archivo de registro. Y entonces ¿qué queremos hacer? Queremos añadirlo, ¿de acuerdo? Entonces voy a poner el
modo A, ¿y luego como qué? Como Iniciar sesión en el archivo de puntuación, y luego agregar dos puntos. Y entonces ¿qué queremos hacer? Queremos escribir en
el archivo Log. Diré Iniciar sesión en el archivo
Score. Punto a la derecha. Y ahora entre paréntesis, podemos usar nuestra cadena F, y luego
simplemente podemos agregar dos puntos, y luego agregaré mi
corchete, llaves colli,
timestamp, y luego el evento,
y esto Ahí vas. Así que vamos a crear un
archivo llamado Registro de Auditoría punto TXT. Y cuando escribamos en el archivo, vamos a
escribir una marca de tiempo Y luego también el evento. Entonces tal vez el usuario creó
una cuenta el 6 de enero 2024 a las 5:30 P.M.
Y 14 segundos, algo así,
ya sabes, así que eso es exactamente lo hemos hecho aquí Impresionante, increíble, increíble.
Entonces ahora necesitamos asegurarnos de que cada actividad
esté, de hecho, registrada. Entonces aquí abajo, la primera actividad va a ser el registro, ¿no? Así que vamos a comprobar.
En realidad, ¿sabes qué? Incluso podemos iniciar sesión cuando la contraseña no era
lo suficientemente fuerte. ¿Qué tal eso? ¿Bien? También podemos registrar eso. Así que justo por aquí donde
dice la retroalimentación de impresión, puedo simplemente venir
aquí ahora mismo, agregar una nueva línea y decir
log underscore event Y ahora entre paréntesis, podemos simplemente decir
campo de registro para el nombre de usuario de usuario. Bien. A mí me gusta esto.
¿Qué opinas? Creo que esto está bien.
Campo de registro para el nombre de usuario. Entonces el registro no fue exitoso porque la
contraseña no era lo suficientemente fuerte. Eso me gusta. Así que hemos
encerrado ahí abajo. Así que ahora, vamos a registrar el
evento en un escenario el
que el registro fue realmente exitoso.
¿Y dónde está eso? Lo tenemos en la línea
56 aquí que dice imprimir el registro de usuario
fue exitoso. Así que justo debajo de él, ahora
podemos agregar nuestro evento de subrayado de
registro Y ahora entre paréntesis, podemos simplemente decir F y luego vamos a tener abrigos y
luego en nuestras llaves collie, podemos decir usar un nombre Bien. Y luego usar un nombre
registrado correctamente. ¿Qué tal eso? Y ahí tienes. Bien. Ahora bien,
¿qué más necesitamos para iniciar sesión? Necesitamos iniciar sesión cuando los usuarios también
hayan iniciado sesión. Y tenemos eso por aquí bajo la función de inicio de sesión donde
dice login exitoso. Así que aquí, voy
a crear una nueva línea, y ahora podemos registrar el evento,
así que registra el evento de subrayado Y luego entre paréntesis,
podemos decir F, cuerda, y luego agregar nuestros
abrigos, tirantes colli Así que usa un nombre, ¿de acuerdo? Bueno, déjame poner
algo de espacio aquí. Utilice un nombre que
haya iniciado sesión correctamente. Y ahí tienes. ¿Hay algo más
que necesitemos registrar? Bien, donde diga el nombre de usuario o contraseña
no válidos, también
podemos registrar este
evento aquí también. Así que estamos registrando todo,
todo, ¿de acuerdo? Así que log evento F, y luego podemos agregar nuestros códigos, y luego podemos decir intento fallido de inicio de
sesión para el usuario, y luego con el
nombre de usuario y ahí va. Bien. Esto me está gustando hasta ahora. ¿Hay
algo más que necesitemos registrar? También podemos iniciar sesión en
la tercera opción. Donde el usuario realmente
sale del sistema, no
es necesario, pero, ya
sabes, nosotros también podríamos. Entonces donde dice imprimir,
saliendo del sistema, simplemente también
podemos registrar esto En realidad, permítanme hacer esto
antes de la declaración impresa. Opción número tres,
vamos a registrar el evento de subrayado. Y entonces podemos simplemente decir
algo así como salida del sistema. Bien. Y ahí tienes. Bien, creo que esto debería
funcionar. Esto debería funcionar. Y voy a seguir adelante
ahora mismo y ejecutar el programa, ok y déjanos ver. Voy a registrar
una nueva cuenta, así que voy a ir con el
número uno, presiona Enter. Vamos a agregar un nombre de usuario. Entonces voy a ir con Tracy. ¿Bien? Y la contraseña, Tracy 21, OP, hashtag Y ahí tienes. Bien, increíble. Por lo que fue exitoso. Primero que nada,
asegurémonos de que bajo el D TXT del usuario, tengamos a Tracy Esa es la
contraseña hash. Y ahora el otro Dc TXT, ahí tienes. Impresionante, increíble. Impresionante. Tracy, registrado con éxito. Y, por supuesto, se puede
ver el formato aquí mismo,
2024, el décimo día de
noviembre a las 9:01 08 Así que también agregamos con éxito
la función de registro. Muchas gracias por
ver el video. Te veré en
la siguiente clase.
76. Parte 7: agregar la función de registros de vista: Regresa. Así que
agreguemos una característica más. Y esta vez, va a ser una característica para nuestros usuarios de inicio de sesión. Queremos que puedan
ver sus propios registros personales. Entonces esto va a
ser en dos pasos. Primero, tendremos que crear una función que
les permita ver sus registros. Y luego, segundo, tendremos que
crear un menú post login. Entonces nuestros usuarios de inicio de sesión,
tendrán un menú separado donde tendrán la
opción de ver el registro. Entonces esto va a
ser en dos partes. En primer lugar, vamos a crear la función
permitirles ver el registro. Así que voy a hacer eso justo debajo de la función de inicio de sesión
principal. Así que permítanme añadir aquí una nota
que diga función, perdón, función para ver los registros. ¿Bien? Voy a llamar a esta función view
unders call logs. Y claro,
vamos a pasar en el parámetro nombre de usuario. Bien, agrega mi colon. Muy bien, así que primero que nada, imprima como un
mensaje general diciendo algo como, ya
sabes, registros para el usuario y luego, ya sabes,
el usuario en particular Entonces voy a decir imprenta. ¿Bien? Y luego vamos a
tener una cadena F, y luego vamos a tener códigos. Y luego déjame agregar
mi barra diagonal hacia atrás N, y luego podemos decir logs, cuatro Usuario, y luego
tenemos nuestras llaves coll, y luego podemos
tener el nombre de usuario Bien, no es necesario,
pero es agradable tenerlo. Bien, ahora vamos a
abrir el registro de auditoría D TextiFle
porque es a partir de ahí, vamos a sacar los Entonces voy a decir con ahora
abierto y ahora entre paréntesis,
¿cuál es el nombre del archivo? Se trata de auditoria bajo
llamada Log TXT. Y ahora, claro, queremos
tener el modo de lectura. Bien, porque vamos a leer del archivo y
vamos a decir como
archivo Log On Score en nuestra columna. Bien, entonces ahora vamos a revisar los
registros y el archivo. Entonces pasémoslos a
una variable llamada logs. Y ahora Log Underscore
file dot redlines. Bien. Y ahí está. Bien. Así que ahora vamos
a tener que crear algún tipo
de bucle de cuatro que va a pasar por cada registro
individual. ¿Y
qué es exactamente lo que buscamos? Estamos buscando
cualquier registro que
coincida con un nombre de usuario en particular. Así que voy a entrar
aquí ahora mismo, ¿verdad? Y voy a decir registros de usuarios, bien, los registros de subrayado van a ser iguales a,
y ahora mira esto. Voy a abrirme en
mis paréntesis aquí. Voy a decir log dot strip y la razón por la que estoy usando
la función strip es de nuevo, quiero eliminar cualquier espacio en blanco
o márgenes
innecesarios de los nombres de usuario, así que voy a
decir log o strip. Y ahora voy a
decir cuatro registros de inicio de sesión. Así que estamos buscando
cada registro individual en nuestros registros. ¿Y qué
estamos buscando? Estamos buscando si el nombre de
usuario está en el registro. Así que estamos buscando un nombre de usuario
muy específico en nuestros archivos de registro. Entonces ahora si lo hacemos, de hecho, encontramos una coincidencia para el registro para el
nombre de usuario, ¿qué hacemos ahora? Así que vamos a decir, si el usuario undercool logs
agrega nuestra columna, y ahora voy
a decir cuatro log in user Underscoe logs,
¿qué queremos Simplemente queremos imprimir. Entonces voy a decir imprimir y
luego registrar, y ahí tienes. Y claro, necesitamos
crear una condición. ¿Qué pasa si no se encontró ningún registro? Simplemente podemos decir otra cosa, y ahora podemos imprimir. Podemos decir que no se encontraron registros. En tu cuenta porque recuerda que esto es
para el usuario de inicio de sesión, y ahí vas. Entonces solo para darte un resumen
muy rápido, ¿verdad? Definimos la función
como ver dos registros de llamadas, y pasamos en el nombre de usuario. Y ahora imprimimos un mensaje
general diciendo, ya
sabes, registros para el usuario. Y luego el
nombre de usuario. Y luego abrimos el otro
registro el archivo de texto. Vamos a leer
de él como un archivo de registro, y luego creamos una variable
llamada logs que
realmente usará el método read lines para cada archivo de registro
en particular. Y ahora aquí, creamos nuestro bucle de cuatro que
va a pasar por cada registro individual
en los registros y luego ver si hay una coincidencia
para ese nombre de usuario. Ahora, si de
hecho hay una coincidencia, simplemente
podemos imprimir el
registro para ese usuario en particular. De lo contrario, simplemente diremos que no se encontraron registros
en su cuenta. Entonces ahí está.
Hemos creado con éxito una función
para los registros de video. Únete a mí en el siguiente video
donde vamos a crear el menú de inicio de sesión de post
para nuestros usuarios de inicio de sesión.
77. Parte 8: añadir el menú de inicio de sesión de publicación: Bueno, vuelve. Así que ahora vamos a crear
la función que
mostrará el menú post login para nuestros
usuarios de inicio de sesión con opciones. Así que hagamos eso justo encima de la función para
ver los registros. Entonces aquí mismo. Voy a decir función para
mostrar Post iniciar sesión en el menú. Bien. Bien, así que como de costumbre,
vamos a llamar a este,
digamos, publicar en el inicio de
sesión de puntuación en el menú de puntuación Creo que es un buen nombre. Y, por supuesto, dentro,
vamos a pasar en un
nombre de usuario perimetral a dos puntos. Bien, entonces vamos a
crear una declaración while. Entonces, mientras el usuario está, de hecho, conectado, dejemos ahora
imprimir las opciones para ellos. Entonces, antes que nada,
en realidad voy a imprimir, como, un mensaje normal. Entonces puedo decir
algo como iniciar sesión, lo
siento, publicar menú de inicio de
sesión, derecha,
Post, guión, menú de inicio de sesión. Bien, y déjame agregar mi N al revés para que
esto esté en la nueva línea. Bien, entonces ahora podemos
imprimir las opciones. Sólo van
a haber dos de ellos. ¿Bien? Entonces la opción número uno
será simplemente ver mis registros. Recuerda que esto es personalizado. Es para el usuario de inicio de sesión. Y luego la opción número dos, bueno, cerrar la sesión supongo Y ahí está. Entonces vamos a tener que preguntarle
al usuario a
qué opción quiere ir. Entonces voy a decir elección
igual y luego entrada, y luego podemos decir
algo como, ya
sabes, ¿qué
te gustaría hacer? Signo de interrogación. Bien. Entonces ahora
vamos a tener que crear las declaraciones IL
para cada escenario. Entonces voy a ir
con el primero si elección es igual a uno, qué queremos hacer,
queremos ver los registros, y claro, usan un nombre. Así que vamos a
llamar a la función, que es ver logs nombre de usuario, así que muy, muy simple. Y entonces podemos decir,
si la elección equivale a dos. Y entonces, ¿qué
queremos hacer aquí? Bueno, simplemente podemos imprimir un mensaje que diga que se
ha desconectado con éxito. Pero entonces no olvides que
queremos registrar cada tarea. Así que vamos a agregar la declaración
log event aquí. Así que log event, y luego
podemos decir algo así como Fstring y luego podemos decir que el usuario tiene un collie
llaves y códigos individuales, nombre de
usuario desconectado nombre de
usuario Y ahí tienes. Y, por supuesto, no
olvides que necesitamos la sentencia break shot en caso de que el
usuario conectado decida, por alguna razón,
elegir la opción tres, cuatro, cinco, o cualquier otra
opción que no exista. Entonces vamos a decir
break y luego si no, podemos simplemente
imprimir un mensaje que diga, elección inválida. Por favor, inténtelo de nuevo. Y ahí está. Bien, entonces ahora hemos
creado
con éxito la función que
mostrará el menú post login. Sin embargo, ¿cómo lo vinculamos realmente a
la función de inicio de sesión? Porque una vez que el usuario inicia sesión, queremos llamar a esta función. Entonces, ¿qué hacemos? Vamos a pasar a
la función de inicio de sesión principal. Y ahora veamos el código. ¿Dónde ha iniciado sesión el usuario? Dice aquí mismo,
inicio de sesión exitoso. Entonces aquí mismo donde
dice el inicio de sesión exitoso, voy a venir
aquí ahora mismo y
ahora llamar a nuestra función. Entonces aquí, voy a decir post guión bajo inicio de sesión, menú de
subrayado Y, claro, entre paréntesis, vamos a agregar el
nombre de usuario y ahí vas. Entonces eso es todo. Creo que hemos
terminado con éxito de escribir nuestro código. Ahora vamos a probarlo. Voy a ejecutar el código, ¿de acuerdo? Y voy a iniciar sesión,
antes que nada, como
en realidad, ¿sabes qué? Voy a intentar otra
cosa, ¿de acuerdo? Solo estoy registrando un nuevo usuario. ¿Bien? Y voy a
llamar a este usuario Boris ¿Bien? Y luego pase
será Bois uno, dos, tres con el símbolo del anuncio. ¿Bien? Así que ahora deja que Boris inicie sesión. Entonces Boris y luego Boris uno,
dos, tres, con el símbolo del anuncio Y ahí tienes, Sí, podemos ver Bois ahora tiene el menú de inicio de sesión de
post, y puede Bois ver sus registros, pero va a presionar
uno y ahí vas, Registros para cuerpos de usuarios. Órganos
registrados satisfactoriamente a las 8:10 35. Y luego
ingresó con éxito a las 8:10 45. Y si miramos a nuestros usuarios
punto TXT, ahí tienes. Tenemos cuerpos con
su contraseña hash. Y luego por aquí
tenemos al Alex registrado
con éxito. John se conectó correctamente. Obviamente, estas son pruebas
que hice fuera de la pantalla. Pero se puede ver
ahora mismo que el programa de
hecho está funcionando con éxito. Hay algunas otras
pruebas que podemos realizar. Podemos asegurarnos de
que si escribí opción número cinco aquí, ¿
de acuerdo? Tecleé cinco y
presioné Enter, puede decir
elección inválida, por favor inténtelo de nuevo Así que déjame intentar cerrar la sesión ahora y puedes verlo, de hecho, desconectado
correctamente. Y si presiono tres
en el menú principal, se
puede ver ahora mismo que
ha salido del sistema y el programa de hecho está
funcionando correctamente Entonces ahí está. Enhorabuena. Hemos creado
con éxito un sistema de
registro de usuarios bastante avanzado que permitiría a
los usuarios registrarse. También hemos implementado
un verificador de contraseñas para garantizar que la
contraseña sea
lo suficientemente fuerte al tener al menos
ocho caracteres de largo, tener una mayúscula Opa , un número y también
un símbolo especial. Y, por supuesto, también hemos agregado funciones de seguridad
adicionales para hash de la contraseña
para que se almacenen en un formato hash Y, por supuesto, también creamos un menú de inicio de sesión para los
usuarios de inicio de sesión donde luego pueden
ver sus propios registros personales. Eso ha sido divertido. Muchas
gracias por ver. Te veré en la siguiente clase.
78. Conclusión del proyecto final: Bien, así que enhorabuena. Hemos
construido con éxito el sistema de registro de usuarios, y solo quería
darte algunos consejos más. Sul en caso de que
quisieras tal vez
mejorar aún más el programa o hacer algunos ajustes
aquí y allá. En lugar de hacer hash
las contraseñas, por ejemplo, puedes intentar
cifrarlas que pueda intentar eliminar la función
hash y luego reemplazarla con la función de
cifrado Obviamente,
tendrás que importar la biblioteca de criptografía para
poder hacer eso Y luego incluso puedes agregar
una opción adicional para el usuario de inicio de sesión además de
que vean los registros. Se puede crear una función, una sencilla función matemática que puede calcular algún tipo de, ya
sabes, multiplicación
o suma Puedes pedirle al usuario que proporcione dos o tres números,
ellos los proporcionan, y luego la función puede
hacer algún tipo de matemática, tal vez
pueda
multiplicarlos o agregarlos, ya
sabes, algo
muy, muy básico. También puede agregarlo como una opción extra para
el usuario de inicio de sesión. Entonces, hay muchas
formas diferentes de
mejorar o modificar aún más mejorar o modificar el sistema de registro de usuarios
que acabamos de construir. Así que sé creativo, piensa
fuera de la caja, busca formas mejorar o modificar el programa. Y si se te ocurren
algunas ideas muy interesantes, me encantaría saber de ti. También me encantaría que
compartieras tu código,
compartas tu código
con la comunidad, compartas tu código con el resto de estudiantes que toman
el curso, también. Entonces eso
es más o menos para el proyecto. Espero que te hayas divertido mucho,
construyendo el sistema de registro de usuarios, y ojalá también hayas
aprendido bastante, también. Así que gracias por ver. Gracias por construir conmigo
el
sistema de registro de usuarios. Te veré en la siguiente clase.
79. Conclusión del curso: Enhorabuena.
Has llegado al final de este curso, Python
para la ciberseguridad Y ojalá encontraras el
curso muy útil, informativo, educativo,
pero también divertido, también. Y ojalá, en este punto, ahora
tengas las habilidades para escribir algunos programas
con Python. si tienes alguna duda
sobre cualquier cosa que
cubrimos en este curso, como de costumbre, estaré
más que feliz de
atenderte y
responderte y ayudarte de cualquier manera que pueda. No dudes en
contactarme. Y si te ha
resultado útil este curso, por favor no olvides
dejar una reseña escrita para el curso y dejar que
el mundo sepa que disfrutaste del curso. Entonces, eso es todo. Mi nombre es Alex. Ha sido un placer.
Si vas a tomar algún otro de mis cursos de
ciberseguridad Ojalá también te vea
en esos cursos. Pero si esto es un adiós, déjame decirte que
te deseo todo lo mejor en tu viaje a Python y también en tu viaje como profesional de la
ciberseguridad, te
deseo
nada más que éxito y mucho más
éxito en el futuro Entonces Lassa, muchas
gracias por tomar el curso para Marlin y nos vemos la próxima
vez. Adiós.