Restructure content and add notes from HolaMundo
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
64ed03f811
commit
f4e9797c4b
39
HolaMundo/01_calculadora.py
Normal file
39
HolaMundo/01_calculadora.py
Normal file
@ -0,0 +1,39 @@
|
||||
"""
|
||||
Calculadora
|
||||
"""
|
||||
|
||||
# Se piden los valores
|
||||
n1 = input("Ingresa el primer número: ")
|
||||
n2 = input("Ingresa el segundo número: ")
|
||||
|
||||
# Se transforman los valores en integer
|
||||
n1 = int(n1)
|
||||
n2 = int(n2)
|
||||
|
||||
# Variables de las posibles operaciones
|
||||
suma = n1 + n2
|
||||
resta = n1 - n2
|
||||
multi = n1 * n2
|
||||
div = n1 / n2
|
||||
|
||||
# Se pregunta la operación a realizar
|
||||
op = input("""
|
||||
¿Qué operación quieres hacer?
|
||||
s --> Sumar
|
||||
r --> Restar
|
||||
m --> Multiplicar
|
||||
d --> Dividir
|
||||
> """)
|
||||
|
||||
opciones = ("s", "r", "m", "d")
|
||||
|
||||
if op == "s":
|
||||
print(f"El resultado de la suma de {n1} y {n2} es {suma}")
|
||||
elif op == "r":
|
||||
print(f"El resultado de la resta de {n1} y {n2} es {resta}")
|
||||
elif op == "m":
|
||||
print(f"El resultado de la multiplicación entre {n1} por {n2} es {multi}")
|
||||
elif op == "d":
|
||||
print(f"El resultado de la división entre {n1} por {n2} es {div}")
|
||||
else:
|
||||
print("Operación no encontrada. Vuelve a intentarlo")
|
12
HolaMundo/02_if01.py
Normal file
12
HolaMundo/02_if01.py
Normal file
@ -0,0 +1,12 @@
|
||||
"""
|
||||
Condicionales con if
|
||||
"""
|
||||
|
||||
edad = input("Introduce tu edad: ")
|
||||
edad = int(edad)
|
||||
if edad > 17:
|
||||
print("Puedes ver la pelicula. Adelante!")
|
||||
if edad >= 55:
|
||||
print("Ademas, no olvides pedir el descuento para seniors")
|
||||
else:
|
||||
print("Lo siento, eres menor de edad")
|
15
HolaMundo/02_if02.py
Normal file
15
HolaMundo/02_if02.py
Normal file
@ -0,0 +1,15 @@
|
||||
"""
|
||||
Condicionales con if
|
||||
"""
|
||||
|
||||
edad = input("Introduce tu edad: ")
|
||||
edad = int(edad)
|
||||
|
||||
if edad > 65:
|
||||
print("Tienes un super descuento para super seniors")
|
||||
elif edad > 55:
|
||||
print("Tienes un descuento para seniors")
|
||||
elif edad > 17:
|
||||
print("Puedes entrar")
|
||||
else:
|
||||
print("Lo siento, eres menor de edad. Debes irte")
|
9
HolaMundo/03_if_ternario.py
Normal file
9
HolaMundo/03_if_ternario.py
Normal file
@ -0,0 +1,9 @@
|
||||
"""
|
||||
Operador ternario
|
||||
"""
|
||||
|
||||
edad = 15
|
||||
|
||||
mensaje = "Es mayor" if edad > 17 else "Es menor"
|
||||
|
||||
print(mensaje)
|
18
HolaMundo/04_operaciones_corto_circuito.py
Normal file
18
HolaMundo/04_operaciones_corto_circuito.py
Normal file
@ -0,0 +1,18 @@
|
||||
"""
|
||||
Operaciones de corto circuito
|
||||
"""
|
||||
|
||||
gas = False
|
||||
encendido = True
|
||||
edad = 18
|
||||
|
||||
# La lectura de las evaluaciones se efectúa de izquierda a derecha
|
||||
# Con lo cual, cuando tenemos varios "and",
|
||||
# en el momento que python encuentre un False
|
||||
# python dejará de leer.
|
||||
if not gas and encendido and edad >17:
|
||||
print("Puedes avanzar")
|
||||
|
||||
# En cambio con or, python deja de leer cuando encuentra un True
|
||||
if not gas or encendido or edad >17:
|
||||
print("Puedes avanzar")
|
14
HolaMundo/05_cadena_comparadores.py
Normal file
14
HolaMundo/05_cadena_comparadores.py
Normal file
@ -0,0 +1,14 @@
|
||||
"""
|
||||
Cadena de comparadores
|
||||
"""
|
||||
|
||||
edad = 25
|
||||
|
||||
if edad >= 15 and edad <= 65:
|
||||
print("Puede entrar a la piscina")
|
||||
|
||||
# El anterior condicional se puede resumir
|
||||
# encadenando comparadores de comparación
|
||||
|
||||
if 15 <= edad <= 65:
|
||||
print("Puede entrar a la piscina")
|
5
HolaMundo/06_loop_anidado.py
Normal file
5
HolaMundo/06_loop_anidado.py
Normal file
@ -0,0 +1,5 @@
|
||||
for i in range(3):
|
||||
for j in range(2):
|
||||
print(f"{i}, {j}")
|
||||
|
||||
|
97
HolaMundo/07_calculadora.py
Normal file
97
HolaMundo/07_calculadora.py
Normal file
@ -0,0 +1,97 @@
|
||||
"""
|
||||
Calculadora
|
||||
|
||||
Seudocódigo:
|
||||
Aplicación interactiva, tenemos que escribir constantemente en la terminal.
|
||||
Verificar si se ha ingresado un número
|
||||
Si no hay número pedir el número y después pedir operación +-*/
|
||||
Si ya hay un número pedir operación +-*/
|
||||
Pedir otro número
|
||||
Mostrar resultado y guardar como el primer número
|
||||
|
||||
"""
|
||||
import time
|
||||
# Bienvenida
|
||||
print("\n############################")
|
||||
print("Bienvenidos a la calculadora")
|
||||
print("############################")
|
||||
print("\nPara salir tan solo tienes que escribir (salir)")
|
||||
|
||||
# Pedir el primer número y opciones de operación
|
||||
n1 = input("\nIngresa el primer número: ")
|
||||
print(f"Vamos a operar con el {n1}")
|
||||
print("\nLas operaciones que puedes realizar son:")
|
||||
print("- Sumar --> (s)")
|
||||
print("- Restar --> (r)")
|
||||
print("- Multiplicar --> (m)")
|
||||
print("- Dividir --> (d)\n")
|
||||
|
||||
|
||||
# Inicio de bucle. Si no se pone "salir" seguirá dentro
|
||||
comando = ""
|
||||
while comando.lower() != "salir":
|
||||
comando = input("$ ")
|
||||
if comando != "salir":
|
||||
op = comando
|
||||
|
||||
if op not in ("s", "r", "m", "d"):
|
||||
print("\nDime un operador correcto")
|
||||
continue
|
||||
|
||||
print(f"\nVamos a realizar la operación con el número {n1}")
|
||||
n2 = input("Dime el segundo número: ")
|
||||
|
||||
# Conversor de str a int de los números
|
||||
n2 = int(n2)
|
||||
n1 = int(n1)
|
||||
|
||||
# Posibles operaciones
|
||||
suma = n1 + n2
|
||||
resta = n1 - n2
|
||||
multi = n1 * n2
|
||||
div = n1 / n2
|
||||
|
||||
# Condicional de las respuestas a las operaciones
|
||||
if op == "s":
|
||||
print(f"__________________________________________________")
|
||||
print(f"\nEl resultado de la suma de {n1} y {n2} es {suma}")
|
||||
print(f"__________________________________________________")
|
||||
time.sleep(1.5)
|
||||
print("\n Dime otro operador")
|
||||
n1 = suma
|
||||
elif op == "r":
|
||||
print(f"__________________________________________________")
|
||||
print(f"\nEl resultado de la resta de {n1} y {n2} es {resta}")
|
||||
print(f"__________________________________________________")
|
||||
time.sleep(1.5)
|
||||
print("\n Dime otro operador")
|
||||
n1 = resta
|
||||
elif op == "m":
|
||||
print(f"__________________________________________________")
|
||||
print(f"\nEl resultado de la multiplicación entre {n1} por {n2} es {multi}")
|
||||
print(f"__________________________________________________")
|
||||
time.sleep(1.5)
|
||||
print("\n Dime otro operador")
|
||||
n1 = multi
|
||||
elif op == "d":
|
||||
print(f"__________________________________________________")
|
||||
print(f"\nEl resultado de la división entre {n1} por {n2} es {div}")
|
||||
print(f"__________________________________________________")
|
||||
time.sleep(1.5)
|
||||
print("\n Dime otro operador")
|
||||
n1 = div
|
||||
|
||||
# Despedida de la opción "salir"
|
||||
elif comando == "salir":
|
||||
print("\nHasta pronto! ^_^")
|
||||
break
|
||||
# Error, si se pone un comando diferente a todo lo anterior
|
||||
else:
|
||||
print(f"\nQue me estás container?")
|
||||
print("Estas son las opciones:")
|
||||
print("- Sumar --> (s)")
|
||||
print("- Restar --> (r)")
|
||||
print("- Multiplicar --> (m)")
|
||||
print("- Dividir --> (d)")
|
||||
print("- Salir --> (salir)\n")
|
||||
continue
|
48
HolaMundo/07_calculadoraHolaMundo.py
Normal file
48
HolaMundo/07_calculadoraHolaMundo.py
Normal file
@ -0,0 +1,48 @@
|
||||
"""
|
||||
Calculadora
|
||||
Solución al ejercicio
|
||||
|
||||
Seudocódigo:
|
||||
Aplicación interactiva, tenemos que escribir constantemente en la terminal.
|
||||
Verificar si se ha ingresado un número
|
||||
Si no hay número pedir el número y después pedir operación +-*/
|
||||
Si ya hay un número pedir operación +-*/
|
||||
Pedir otro número
|
||||
Mostrar resultado y guardar como el primer número
|
||||
|
||||
"""
|
||||
# Bienvenida
|
||||
print("\n############################")
|
||||
print("Bienvenidos a la calculadora Hola Mundo")
|
||||
print("############################")
|
||||
print("\nPara salir tan solo tienes que escribir (salir)")
|
||||
print("\nLas operaciones que puedes realizar son s, r, m y d")
|
||||
|
||||
resultado = ""
|
||||
while True:
|
||||
if not resultado:
|
||||
resultado = input("Ingrese número: ")
|
||||
if resultado.lower() == "salir":
|
||||
break
|
||||
resultado = int(resultado)
|
||||
op = input("Ingresa operación: ")
|
||||
if op.lower() == "salir":
|
||||
break
|
||||
n2 = input("Ingresa el siguiente número: ")
|
||||
if n2.lower() == "salir":
|
||||
break
|
||||
n2 = int(n2)
|
||||
|
||||
if op.lower() == "s":
|
||||
resultado += n2
|
||||
elif op.lower() == "r":
|
||||
resultado -= n2
|
||||
elif op.lower() == "m":
|
||||
resultado *= n2
|
||||
elif op.lower() == "d":
|
||||
resultado /= n2
|
||||
else:
|
||||
print("Operación no válida")
|
||||
break
|
||||
|
||||
print(f"El resultado es {resultado}")
|
29
HolaMundo/08_funciones.py
Normal file
29
HolaMundo/08_funciones.py
Normal file
@ -0,0 +1,29 @@
|
||||
|
||||
# Parámetros por defecto
|
||||
def hola(nombre="Mun", apellido=""):
|
||||
print("Hola mundo")
|
||||
print(f"Bienvenido {nombre} {apellido}!")
|
||||
|
||||
|
||||
# Argumento indicando el parámetro concreto
|
||||
hola(apellido="García")
|
||||
|
||||
print("")
|
||||
|
||||
hola("Mariano", "Bermudez")
|
||||
|
||||
hola()
|
||||
|
||||
# Parámetro comodín (iterable)
|
||||
# para añadir un número indeterminado de argumentos.
|
||||
# xargs
|
||||
|
||||
|
||||
def suma(*numeros):
|
||||
resultado = 0
|
||||
for numero in numeros:
|
||||
resultado += numero
|
||||
return resultado
|
||||
|
||||
|
||||
print(suma(3, 6, 2, 4, 65, 23, 4, 100))
|
3
HolaMundo/09_args_indefinidos.py
Normal file
3
HolaMundo/09_args_indefinidos.py
Normal file
@ -0,0 +1,3 @@
|
||||
"""
|
||||
Argumentos indefinidos (*args)
|
||||
"""
|
49
HolaMundo/10_palindromo.py
Normal file
49
HolaMundo/10_palindromo.py
Normal file
@ -0,0 +1,49 @@
|
||||
"""
|
||||
Comprobar palindromo
|
||||
"""
|
||||
|
||||
|
||||
def es_palindromo(texto):
|
||||
"""
|
||||
Función para comprobar si es un palindromo
|
||||
Al texto se le elimina los espacios y acentos
|
||||
"""
|
||||
# Sustituyo vocales con acento y pongo texto en minúsculas
|
||||
texto = texto.replace('á', 'a').replace('é', 'e').replace(
|
||||
'í', 'i').replace('ó', 'o').replace('ú', 'u').lower()
|
||||
|
||||
# Declaro variables
|
||||
al_derecho = ''
|
||||
al_reves = ''
|
||||
|
||||
# Ordeno el texto al derecho y al revés sin espacios
|
||||
for i in texto:
|
||||
if i != ' ':
|
||||
al_reves = i + al_reves
|
||||
al_derecho += i
|
||||
|
||||
# Comparo el texto al derecho y al revés
|
||||
return al_derecho == al_reves
|
||||
|
||||
# Explicacion
|
||||
print("Este programa comprueba si el texto que introduzcas es un palindromo")
|
||||
print("Para salir debes introducir \"salir\"\n")
|
||||
|
||||
|
||||
# Bucle con la pregunta de la palabra, con la condicional true/false
|
||||
# de respuesta y con otra pregunta por si quiere preguntar más.
|
||||
|
||||
txt = ''
|
||||
while txt.lower() != 'salir':
|
||||
txt = input('Dame un texto para comprobar si es palindromo: ')
|
||||
|
||||
print()
|
||||
if txt == 'salir':
|
||||
break
|
||||
elif es_palindromo(txt):
|
||||
print(f'El texto \"{txt}\" es palindromo')
|
||||
else:
|
||||
print(f'El texto \"{txt}\" no es palindromo')
|
||||
print()
|
||||
|
||||
print('¡Ciao!')
|
172
HolaMundo/11_listas.py
Normal file
172
HolaMundo/11_listas.py
Normal file
@ -0,0 +1,172 @@
|
||||
"""
|
||||
Tipos de listas
|
||||
"""
|
||||
|
||||
numeros = [1, 2, 3]
|
||||
letras = ['a', 'b', 'c']
|
||||
palabras = ['chanchito', 'feliz']
|
||||
palabras = ['chanchito', 'feliz', 'Felipe', 'alumno']
|
||||
booleans = [True, False, True, True]
|
||||
matriz = [[0, 1], [1, 0]]
|
||||
|
||||
# tener una lista multiplicada
|
||||
ceros = [0] * 10
|
||||
ceros_unos = [0, 1] * 10
|
||||
|
||||
# Unir dos listas
|
||||
alfanumerico = numeros + letras
|
||||
|
||||
# Crear un rango de numeros en una lista
|
||||
rango = list(range(1, 11))
|
||||
|
||||
# Crear una lista de un string
|
||||
chars = list("hola mundo")
|
||||
|
||||
|
||||
"""
|
||||
Manipulando listas
|
||||
"""
|
||||
|
||||
mascotas = ["Wolfgang", "Pelusa", "Pulga", "Copito"]
|
||||
|
||||
# Accediendo a un elemento
|
||||
print(mascotas[0])
|
||||
|
||||
# Cambiar un elemento
|
||||
mascotas[0] = "Bicho"
|
||||
print(mascotas)
|
||||
|
||||
# Pedir un fragmento de la lista
|
||||
print(mascotas[2:])
|
||||
print(mascotas[-1])
|
||||
|
||||
|
||||
"""
|
||||
Desempaquetar listas
|
||||
"""
|
||||
|
||||
primero, segundo, tercero = numeros
|
||||
|
||||
mas_numeros = list(range(1, 11))
|
||||
primero, *otros = mas_numeros
|
||||
primero, segundo, *otros, penultimo, ultimo = mas_numeros
|
||||
|
||||
print(primero, segundo, otros, penultimo, ultimo)
|
||||
|
||||
|
||||
"""
|
||||
Acceder al indice de una lista
|
||||
"""
|
||||
|
||||
for mascota in enumerate(mascotas):
|
||||
print(mascota)
|
||||
# Con la función enumarate nos devuelve tuplas
|
||||
# Con lo cual, con 0 nos devuelve el indice
|
||||
print(mascota[0])
|
||||
# Y con 1 nos devuelve la mascota
|
||||
print(mascota[1])
|
||||
|
||||
# Entonces, guardamos en el for el indice ya lo tendremos en una variable
|
||||
for indice, mascota in enumerate(mascotas):
|
||||
print(indice, mascota)
|
||||
|
||||
|
||||
"""
|
||||
Buscar elementos
|
||||
"""
|
||||
|
||||
mascotas.index("Pelusa")
|
||||
# Pero indice da error si no encuentra el elemento
|
||||
# mascotas.index("Wolfgang")
|
||||
|
||||
# Podemos ingresa un nuevo elemento en la lista indican su indice
|
||||
mascotas.insert(3, "Pelusa")
|
||||
# Para agregar al final de la lista
|
||||
mascotas.append("Mun")
|
||||
|
||||
print(mascotas)
|
||||
|
||||
# Podemos contar las veces que hay un elemento en una lista con count
|
||||
print(mascotas.count('Pelusa'))
|
||||
|
||||
# Para eliminar. Pero solo elimina la primera vez
|
||||
mascotas.remove('Pelusa')
|
||||
print(mascotas)
|
||||
|
||||
# Para eliminar el último elemento
|
||||
mascotas.pop()
|
||||
print(mascotas)
|
||||
|
||||
# Y por su indice
|
||||
mascotas.pop(1)
|
||||
print(mascotas)
|
||||
|
||||
# También se puede eliminar con del
|
||||
del mascotas[0]
|
||||
print(mascotas)
|
||||
|
||||
# Para eliminar por completo
|
||||
mascotas.clear()
|
||||
print(mascotas)
|
||||
|
||||
|
||||
"""
|
||||
Ordenando listas
|
||||
"""
|
||||
|
||||
desorden = [2, 1, 44, 23, 66, 34, 78, 5]
|
||||
|
||||
# Orden derecho
|
||||
desorden.sort()
|
||||
print(desorden)
|
||||
|
||||
# Orden inverso
|
||||
desorden.sort(reverse=True)
|
||||
print(desorden)
|
||||
|
||||
# Con sort() se ordena la lista pero
|
||||
# Con sorted() nos devolverá una nueva lista
|
||||
# Entonces, hay que asignarlo a otra lista
|
||||
|
||||
nueva_lista = sorted(desorden)
|
||||
|
||||
print(nueva_lista)
|
||||
# La primera lista no se verá afectada
|
||||
print(desorden)
|
||||
|
||||
# A sorted() también se puede hacer el inverso
|
||||
nueva_lista = sorted(desorden, reverse=True)
|
||||
|
||||
# Ordenamos listas dentro de una lista
|
||||
usuarios = [[4, 'Chanchito'], [5, 'Pulga'], [1, 'Felipe']]
|
||||
|
||||
usuarios.sort()
|
||||
print(usuarios)
|
||||
|
||||
# Con en integer segundo ordenad por el primer elemento
|
||||
usuarios2 = [['Chanchito', 4], ['Pulga', 5], ['Felipe', 1]]
|
||||
usuarios2.sort()
|
||||
print(usuarios2)
|
||||
|
||||
# Pero podemos indicar que ordene por el segundo elemento "[1]"
|
||||
# con una función
|
||||
|
||||
usuarios3 = [['Chanchito', 4], ['Pulga', 5], ['Felipe', 1]]
|
||||
|
||||
|
||||
def ordena(elemento):
|
||||
return elemento[1]
|
||||
|
||||
|
||||
# Con key indicamos que sort() pase los argumentos a la función usuarios3
|
||||
# y devolverá la lista pero solo del elemento indicado dentro de la función
|
||||
# Aquí podríamos pasar un segundo argumento como reverse=True
|
||||
usuarios3.sort(key=ordena)
|
||||
print(usuarios3)
|
||||
|
||||
# Esto se puede hacer más elegante
|
||||
# con funciones lambda (Funciones canónicas)
|
||||
# Sintaxis: (key=lambda parámetro:valorRetorno)
|
||||
# La lambda sustituye a la anterior función ^_^
|
||||
|
||||
usuarios3.sort(key=lambda elemento: elemento[1])
|
43
HolaMundo/12_listas_compresion_map_filter.py
Normal file
43
HolaMundo/12_listas_compresion_map_filter.py
Normal file
@ -0,0 +1,43 @@
|
||||
"""
|
||||
Compresión listas
|
||||
|
||||
Sintaxis:
|
||||
[expresión for item in items]
|
||||
"""
|
||||
|
||||
# extraer solo un elemento. map
|
||||
usuarios = [['Chanchito', 4], ['Pulga', 5], ['Felipe', 1]]
|
||||
|
||||
nombres_usuarios = [n[0] for n in usuarios]
|
||||
|
||||
print(nombres_usuarios)
|
||||
|
||||
# Filtrando. filter
|
||||
nombres_usuarios2 = [n for n in usuarios if n[1] > 2]
|
||||
|
||||
print(nombres_usuarios2)
|
||||
|
||||
# Ambas operaciones anteriores
|
||||
nombres_usuarios3 = [n[0] for n in usuarios if n[1] > 2]
|
||||
|
||||
print(nombres_usuarios3)
|
||||
|
||||
|
||||
"""
|
||||
Funciones
|
||||
map y filter
|
||||
|
||||
Ya no se usa, pero hay que tenerlo en cuenta por si se encuentra
|
||||
Es programación funcional
|
||||
"""
|
||||
|
||||
# map
|
||||
nombres_usuarios4 = list(map(lambda usuario: usuario[0], usuarios))
|
||||
|
||||
print(nombres_usuarios4)
|
||||
|
||||
# filter
|
||||
|
||||
nombres_usuarios5 = list(filter(lambda usuario: usuario[1] > 2, usuarios))
|
||||
|
||||
print(nombres_usuarios5)
|
62
HolaMundo/13_tuplas_sets.py
Normal file
62
HolaMundo/13_tuplas_sets.py
Normal file
@ -0,0 +1,62 @@
|
||||
"""
|
||||
Tuplas
|
||||
|
||||
Es exactamente lo mismo que una lista
|
||||
pero no permite modificación alguna
|
||||
"""
|
||||
|
||||
numeros = (1, 2, 3)
|
||||
|
||||
# Se puede concatenar tuplas pero creando una nueva
|
||||
|
||||
mas_numeros = numeros + (4, 5, 6, 7)
|
||||
|
||||
print(mas_numeros)
|
||||
|
||||
# Se puede transformar una lista en una tupla
|
||||
punto = tuple([1, 2])
|
||||
|
||||
"""
|
||||
Sets
|
||||
|
||||
Es una colección o un conjunto.
|
||||
No se puede repetir ni está ordenada
|
||||
No tienen indice
|
||||
"""
|
||||
primer_set = {1, 1, 1, 2, 3, 3, 4, 4, 4, 5}
|
||||
|
||||
print(primer_set)
|
||||
|
||||
primer_set.add(6)
|
||||
primer_set.remove(1)
|
||||
|
||||
print(primer_set)
|
||||
|
||||
# transformar lista en set
|
||||
segundo = [4, 5, 6, 7, 8, 9]
|
||||
segundo = set(segundo)
|
||||
|
||||
print(segundo, type(segundo))
|
||||
|
||||
# Operadores
|
||||
|
||||
# # Operador unión |
|
||||
# # devolver todo junto eliminando repetidos
|
||||
print(primer_set | segundo)
|
||||
|
||||
# # Operador intersección
|
||||
# # devolverá los elementos
|
||||
# # que se encuentren en los dos sets &
|
||||
print(primer_set & segundo)
|
||||
|
||||
# # Operador diferencia
|
||||
# # Mostrar los elementos de la izquierda
|
||||
# # quitando los elementos de la derecha
|
||||
# # Como una resta
|
||||
print(primer_set - segundo)
|
||||
|
||||
# # Operador Diferencia simétrica
|
||||
# # Es lo contrario de la intersección.
|
||||
# # Devolverá los elementos
|
||||
# # que no se encuentren en los dos sets
|
||||
print(primer_set ^ segundo)
|
50
HolaMundo/14_diccionarios.py
Normal file
50
HolaMundo/14_diccionarios.py
Normal file
@ -0,0 +1,50 @@
|
||||
"""
|
||||
Diccionarios
|
||||
clave = valor
|
||||
|
||||
La clave solo puede ser string.
|
||||
El valor puede ser cualquier cosa
|
||||
|
||||
La clave no se puede modificar.
|
||||
El valor sí.
|
||||
"""
|
||||
|
||||
punto = {'x': 25, 'y': 50}
|
||||
|
||||
print(punto)
|
||||
|
||||
# No se puede acceder mediante indice.
|
||||
# El indice es el strinf de la clave
|
||||
print(punto['x'])
|
||||
|
||||
|
||||
# Y cuidao, si la llave no existe da error
|
||||
# Para que no de error es mejor usar un if
|
||||
if "lala" in punto:
|
||||
print(punto["lala"])
|
||||
|
||||
|
||||
# Añadir otra clave y su valor
|
||||
punto["z"] = 45
|
||||
|
||||
print(punto)
|
||||
|
||||
# Otro método para obtener valores es get
|
||||
|
||||
print(punto.get("y"))
|
||||
|
||||
# Con este método no da error si no existe.
|
||||
# devolverá None
|
||||
print(punto.get("lala"))
|
||||
|
||||
# Y podemos indicar un valor por defecto
|
||||
# para el caso que no exista
|
||||
print(punto.get("lala", 97))
|
||||
|
||||
|
||||
# Para eliminar
|
||||
del punto["x"]
|
||||
# Función del
|
||||
del (punto["y"])
|
||||
|
||||
print(punto)
|
24
HolaMundo/README.md
Normal file
24
HolaMundo/README.md
Normal file
@ -0,0 +1,24 @@
|
||||
# Apuntes de python de holamundo
|
||||
|
||||
Estos apuntes y ejercicios en python han sido realizados viendo un vídeo de Holamundo:
|
||||
- [Aprende python ahora! Curso completo e intensivo desde cero](https://www.youtube.com/watch?v=tQZy0U8s9LY&ab_channel=HolaMundo)
|
||||
|
||||
¡Te recomiendo que lo veas y hagas tus propios apuntes! Este repositorio es para mi uso personal, pero si te sirve de ayuda, ¡me alegro!
|
||||
|
||||
## Scripts del curso
|
||||
- [01_calculadora.py](01_calculadora.py)
|
||||
- [02_if01.py](02_if.py)
|
||||
- [02_if02.py](02_if02.py)
|
||||
- [03_if_ternario.py](03_if_ternario.py)
|
||||
- [04_operaciones_corto_circuito.py](04_operaciones_corto_circuito.py)
|
||||
- [05_cadena_comparadores.py](05_cadena_comparadores.py)
|
||||
- [06_loop_anidado.py](06_loop_anidado.py)
|
||||
- [07_calculadoraHolaMundo.py](07_calculadoraHolaMundo.py)
|
||||
- [07_calculadora.py](07_calculadora.py)
|
||||
- [08_funciones.py](08_funciones.py)
|
||||
- [09_args_indefinidos.py](09_args_indefinidos.py)
|
||||
- [10_palindromo.py](10_palindromo.py)
|
||||
- [11_listas.py](11_listas.py)
|
||||
- [12_listas_compresion_map_filter.py](12_listas_compresion_map_filter.py)
|
||||
- [13_tuplas_sets.py](13_tuplas_sets.py)
|
||||
- [14_diccionarios.py](14_diccionarios.py)
|
84
README.md
84
README.md
@ -1,8 +1,13 @@
|
||||
# Curso de python 🚀
|
||||
# Cursos de python 🚀
|
||||
|
||||
Este repositorio contiene los apuntes tomados en diversos cursos de python, en especial en el curso «[Python total](https://www.udemy.com/course/python-total)» impartido por «Escuela Directa» que consta de 30 horas aproximadamente de vídeo-tutoriales. Las prácticas y ejercicios aquí contenidos tuvieron una duración de más de 200 horas, de mucho café e insomnio.
|
||||
Este repositorio contiene los apuntes tomados en diversos cursos de python reflejados en la siguiente tabla:
|
||||
|
||||
Los apuntes no fueron pensados para compartirlos, por ello pueden tener lagunas de información o contenido adicional respecto al curso, ya que se redactaron para recordar procedimientos y conceptos que el autor creyó relevantes. Teniendo un documento, a mi parecer, tan completo y entendiendo que el conocimiento debe ser libre se decidió compartirlo. Cualquier error puedes abrir un issue o contactar conmigo.
|
||||
| Curso | Índice repo | Duración personal | Duración de vídeos | Fuente original |
|
||||
| -----------: | :-------------------------------------------------------- | :---------------: | :----------------: | :------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Python total | [contenidos](#índice-de-los-contenidos-de-python-total-📎) | 200 horas | 30 horas | [Escuela Directa](https://www.udemy.com/course/python-total) |
|
||||
| HolaMundo | [contenidos](#índice-de-los-contenidos-de-holamundo-📎) | 5 horas | 15 horas | [Aprende python ahora! Curso completo e intensivo desde cero](https://www.youtube.com/watch?v=tQZy0U8s9LY&ab_channel=HolaMundo) |
|
||||
|
||||
Las prácticas y ejercicios aquí contenidos son los que hice mediante los cursos mencionados y por investigación propia, con mucho café e insomnio. Realmente, los apuntes no fueron pensados para compartirlos, por ello pueden tener lagunas de información o contenido adicional respecto al curso, ya que se redactaron para recordar procedimientos y conceptos que EMHO me parecieron relevantes. Teniendo un documento, a mi parecer, tan completo y entendiendo que el conocimiento debe ser libre se decidió compartirlos. Por eso, **cualquier error puedes abrir un issue o contactar conmigo**.
|
||||
|
||||
Si te parece útil este documento puedes agradecerlo a través de las vías de contacto de la web https://vergaracarmona.es o [invítandome a un café](#invítame-a-un-café-☕️) ☕️
|
||||
|
||||
@ -14,7 +19,7 @@ Recuerda,
|
||||
---
|
||||
<br>
|
||||
|
||||
# Qué es python según chatGPT
|
||||
# Qué es python según chatGPT 🤖
|
||||
|
||||
Python es un lenguaje de programación interpretado y de alto nivel. Fue creado por Guido van Rossum y lanzado por primera vez en 1991. Python se destaca por su sintaxis clara y legible, lo que lo hace muy accesible tanto para principiantes como para programadores experimentados.
|
||||
|
||||
@ -28,7 +33,7 @@ Además, Python es conocido por ser un lenguaje fácil de aprender y utilizar. S
|
||||
|
||||
En resumen, Python es un lenguaje de programación de alto nivel, interpretado y fácil de aprender que se utiliza ampliamente en una variedad de aplicaciones, desde desarrollo web hasta análisis de datos e inteligencia artificial. Su enfoque en la legibilidad del código y su comunidad activa lo convierten en una elección popular entre los programadores.
|
||||
|
||||
## Tabla de comparación con otros lenguajes
|
||||
## Tabla de comparación con otros lenguajes de programación 📊
|
||||
|
||||
| Característica | Python | Java | C++ | JavaScript |
|
||||
| --------------------- | ------------------------------------------------ | ---------------------------------------- | --------------------------------------- | ----------------------------------------- |
|
||||
@ -47,14 +52,14 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
---
|
||||
<br>
|
||||
|
||||
# **Índice de los contenidos de cada día** 📎
|
||||
# **Índice de los contenidos de python-total** 📎
|
||||
|
||||
- [Día 1 - Programa un creador de nombres](dia_01/README.md)
|
||||
- [Día 1 - Programa un creador de nombres](python-total/dia_01/README.md)
|
||||
- 1.1. - print
|
||||
- 1.2. - strings
|
||||
- 1.3. - input
|
||||
- 1.4. - Proyecto del Día 1
|
||||
- [Día 2 - Programa un calculador de comisiones](dia_02/README.md)
|
||||
- [Día 2 - Programa un calculador de comisiones](python-total/dia_02/README.md)
|
||||
- 2.1. - Tipos de datos
|
||||
- 2.2. - Variables
|
||||
- 2.3. - Nombres de variables
|
||||
@ -64,7 +69,7 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 2.7. - Operadores matemáticos
|
||||
- 2.8. - Redondeo
|
||||
- 2.9. - Proyecto del Día 2
|
||||
- [Día 3 - Programa un analizador de texto](dia_03/README.md)
|
||||
- [Día 3 - Programa un analizador de texto](python-total/dia_03/README.md)
|
||||
- 3.1. - Index( )
|
||||
- 3.2. - Substrings
|
||||
- 3.3. - Métodos para Strings
|
||||
@ -75,7 +80,7 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 3.8. - sets
|
||||
- 3.9. - booleanos
|
||||
- 3.10. - Proyecto del Día 3
|
||||
- [Día 4 - Programa el juego "adivina el número"](dia_04/README.md)
|
||||
- [Día 4 - Programa el juego "adivina el número"](python-total/dia_04/README.md)
|
||||
- 4.1. - Operadores de comparación
|
||||
- 4.2. - Operadores lógicos
|
||||
- 4.3. - Control de flujo
|
||||
@ -88,7 +93,7 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 4.10. - Comprensión de listas
|
||||
- 4.11. - match
|
||||
- 4.12. - Proyecto del Día 4
|
||||
- [Día 5 - Programa el juego "El ahorcado"](dia_05/README.md)
|
||||
- [Día 5 - Programa el juego "El ahorcado"](python-total/dia_05/README.md)
|
||||
- 5.1. - Documentación
|
||||
- 5.2. - Funciones
|
||||
- 5.3. - return
|
||||
@ -98,7 +103,7 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 5.7. - **kwargs
|
||||
- 5.8. - Ejercicios
|
||||
- 5.9. - Proyecto del Día 5
|
||||
- [Día 6 - Programa un recetario](dia_06/README.md)
|
||||
- [Día 6 - Programa un recetario](python-total/dia_06/README.md)
|
||||
- 6.1. - Abrir y leer archivos
|
||||
- 6.2. - Crear y escribir archivos
|
||||
- 6.3. - Directorios
|
||||
@ -107,7 +112,7 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 6.6. - Limpiar la consola
|
||||
- 6.7. - Archivos + funciones
|
||||
- 6.8. - Proyecto del Día 6
|
||||
- [Día 7 - Programa una cuenta bancaria](dia_07/README.md)
|
||||
- [Día 7 - Programa una cuenta bancaria](python-total/dia_07/README.md)
|
||||
- 7.1. - Clases
|
||||
- 7.2. - Atributos
|
||||
- 7.3. - Métodos
|
||||
@ -118,7 +123,7 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 7.8. - Pilares de la Programación Orientada a Objetos
|
||||
- 7.9. - Métodos especiales
|
||||
- 7.10. - Proyecto del Día 7
|
||||
- [Día 8 - Programa una consola de turnos](dia_08/README.md)
|
||||
- [Día 8 - Programa una consola de turnos](python-total/dia_08/README.md)
|
||||
- 8.1. - Instalar paquetes
|
||||
- 8.2. - Módulos y paquetes
|
||||
- 8.3. - Manejo de errores
|
||||
@ -127,7 +132,7 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 8.6. - Decoradores
|
||||
- 8.7. - Generadores
|
||||
- 8.8. - Proyecto del Día 8
|
||||
- [Día 9 - Programa un buscador de números de serie](dia_09/README.md)
|
||||
- [Día 9 - Programa un buscador de números de serie](python-total/dia_09/README.md)
|
||||
- 9.1. - Módulo collections
|
||||
- 9.2. - Módulos shutil & os
|
||||
- 9.3. - Módulo datetime
|
||||
@ -136,23 +141,23 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 9.6. - Expresiones regulares
|
||||
- 9.7. - Comprimir y descomprimir archivos
|
||||
- 9.8. - Proyecto del Día 9
|
||||
- [Día 10 - Programa el juego "Invasión espacial"](dia_10/README.md)
|
||||
- [Día 10 - Programa el juego "Invasión espacial"](python-total/dia_10/README.md)
|
||||
- 10.1. - Distancia entre dos puntos
|
||||
- 10.2. - Convertir el Juego en un Archivo Ejecutable (.exe)
|
||||
- [Día 11 - Programa un web scraping](dia_11/README.md)
|
||||
- [Día 11 - Programa un web scraping](python-total/dia_11/README.md)
|
||||
- 11.1. - Extraer elementos de una clase
|
||||
- [Día 12 - Programa un gestor de restaurantes](dia_12/README.md)
|
||||
- [Día 13 - Programa un asistente de voz](dia_13/README.md)
|
||||
- [Día 12 - Programa un gestor de restaurantes](python-total/dia_12/README.md)
|
||||
- [Día 13 - Programa un asistente de voz](python-total/dia_13/README.md)
|
||||
- 13.1. - Librerias y módulos
|
||||
- 13.2. - Algunos problemas con las bibliotecas
|
||||
- 13.3. - Enlaces
|
||||
- [Día 14 - Programa un controlador de asistencia](dia_14/README.md)
|
||||
- [Día 14 - Programa un controlador de asistencia](python-total/dia_14/README.md)
|
||||
- 14.1. - Bibliotecas
|
||||
- [Día 15 - Programa un modelo de machine learning](dia_15/README.md)
|
||||
- [Día 15 - Programa un modelo de machine learning](python-total/dia_15/README.md)
|
||||
- 5.1. - Bibliotecas
|
||||
- 5.2. - Definiciones
|
||||
- 5.3. - Cuadernos de trabajo en Colab de google drive
|
||||
- [Día 16 - Programa una aplicación web de tareas pendientes](dia_16/README.md)
|
||||
- [Día 16 - Programa una aplicación web de tareas pendientes](python-total/dia_16/README.md)
|
||||
- 16.1. - Entornos Virtuales
|
||||
- 16.2. - Módulos
|
||||
- 16.3. - Preparación de estructura de trabajo
|
||||
@ -177,13 +182,37 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
- 16.22. - estilo de la lista
|
||||
- 16.23. - Estilo de la barra de cerca
|
||||
- 16.24. - Terminar el sitio
|
||||
- [Día 17 - Extra bibliotecas para hacking ético](dia_17/README.md)
|
||||
- [Día 17 - Extra bibliotecas para hacking ético](python-total/dia_17/README.md)
|
||||
- 17.1. - Bibliotecas
|
||||
|
||||
---
|
||||
<br>
|
||||
|
||||
## Licencia
|
||||
# **Índice de los contenidos de HolaMundo** 📎
|
||||
|
||||
- [Descripción de los contenidos](HolaMundo/README.md)
|
||||
- 01_calculadora.py
|
||||
- 02_if02.py
|
||||
- 02_if.py
|
||||
- 03_if_ternario.py
|
||||
- 04_operaciones_corto_circuito.py
|
||||
- 05_cadena_comparadores.py
|
||||
- 06_loop_anidado.py
|
||||
- 07_calculadoraHolaMundo.py
|
||||
- 07_calculadora.py
|
||||
- 08_funciones.py
|
||||
- 09_args_indefinidos.py
|
||||
- 10_palindromo.py
|
||||
- 11_listas.py
|
||||
- 12_listas_compresion_map_filter.py
|
||||
- 13_tuplas_sets.py
|
||||
- 14_diccionarios.py
|
||||
|
||||
|
||||
---
|
||||
<br>
|
||||
|
||||
## Licencia 📄
|
||||
|
||||
- [Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional](LICENSE)
|
||||
|
||||
@ -193,6 +222,13 @@ Esta tabla solo proporciona una comparación general entre los lenguajes y que c
|
||||
|
||||
# Agradecimientos 🎁
|
||||
|
||||
Por supuesto, quiero agradecer a [Federico Garay](https://ar.linkedin.com/in/fedegaray) y a [Nicolás Schürmann](https://www.linkedin.com/in/nicolasschurmann/) (¡Cuidao con el [teclado](https://youtu.be/y0T8UqBkawQ) que se gasta!) por los cursos en concreto que he realizado con ellos y por todo el contenido libre que en sus webs y canales de RRSS.
|
||||
|
||||
También a todos los compas que me han apoyado en este camino.
|
||||
|
||||
[![Solo no puedes, con amigos sí. 🤝](https://youtu.be/Ds7tje_Y0CM)](hhttps://youtu.be/Ds7tje_Y0CM)
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
# Invítame a un café ☕️
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
140
python-total/README.md
Normal file
140
python-total/README.md
Normal file
@ -0,0 +1,140 @@
|
||||
# Apuntes de python de python-total
|
||||
|
||||
Estos apuntes y ejercicios en python han sido realizados en el trascurso del curso de python-total de Federico Garay:
|
||||
- [Python-total](https://www.udemy.com/course/python-total)
|
||||
|
||||
¡Te recomiendo que hagas el curso y redactes tus propios apuntes! Este repositorio es para mi uso personal, pero si te sirve de ayuda, ¡pues me alegro!
|
||||
|
||||
# Índice del curso y sus contenidos
|
||||
|
||||
- [Día 1 - Programa un creador de nombres](dia_01/README.md)
|
||||
- 1.1. - print
|
||||
- 1.2. - strings
|
||||
- 1.3. - input
|
||||
- 1.4. - Proyecto del Día 1
|
||||
- [Día 2 - Programa un calculador de comisiones](dia_02/README.md)
|
||||
- 2.1. - Tipos de datos
|
||||
- 2.2. - Variables
|
||||
- 2.3. - Nombres de variables
|
||||
- 2.4. - integers & floats
|
||||
- 2.5. - Conversiones
|
||||
- 2.6. - Formatear cadenas
|
||||
- 2.7. - Operadores matemáticos
|
||||
- 2.8. - Redondeo
|
||||
- 2.9. - Proyecto del Día 2
|
||||
- [Día 3 - Programa un analizador de texto](dia_03/README.md)
|
||||
- 3.1. - Index( )
|
||||
- 3.2. - Substrings
|
||||
- 3.3. - Métodos para Strings
|
||||
- 3.4. - Strings: propiedades
|
||||
- 3.5. - Listas
|
||||
- 3.6. - Diccionarios
|
||||
- 3.7. - Tuples
|
||||
- 3.8. - sets
|
||||
- 3.9. - booleanos
|
||||
- 3.10. - Proyecto del Día 3
|
||||
- [Día 4 - Programa el juego "adivina el número"](dia_04/README.md)
|
||||
- 4.1. - Operadores de comparación
|
||||
- 4.2. - Operadores lógicos
|
||||
- 4.3. - Control de flujo
|
||||
- 4.4. - loops while
|
||||
- 4.5. - range( )
|
||||
- 4.6. - enumerate( )
|
||||
- 4.7. - zip( )
|
||||
- 4.8. - min( ) & max( )
|
||||
- 4.9. - random
|
||||
- 4.10. - Comprensión de listas
|
||||
- 4.11. - match
|
||||
- 4.12. - Proyecto del Día 4
|
||||
- [Día 5 - Programa el juego "El ahorcado"](dia_05/README.md)
|
||||
- 5.1. - Documentación
|
||||
- 5.2. - Funciones
|
||||
- 5.3. - return
|
||||
- 5.4. - Funciones dinámicas
|
||||
- 5.5. - Interacción entre funciones
|
||||
- 5.6. - *args
|
||||
- 5.7. - **kwargs
|
||||
- 5.8. - Ejercicios
|
||||
- 5.9. - Proyecto del Día 5
|
||||
- [Día 6 - Programa un recetario](dia_06/README.md)
|
||||
- 6.1. - Abrir y leer archivos
|
||||
- 6.2. - Crear y escribir archivos
|
||||
- 6.3. - Directorios
|
||||
- 6.4. - pathlib
|
||||
- 6.5. - Path
|
||||
- 6.6. - Limpiar la consola
|
||||
- 6.7. - Archivos + funciones
|
||||
- 6.8. - Proyecto del Día 6
|
||||
- [Día 7 - Programa una cuenta bancaria](dia_07/README.md)
|
||||
- 7.1. - Clases
|
||||
- 7.2. - Atributos
|
||||
- 7.3. - Métodos
|
||||
- 7.4. - Tipos de métodos
|
||||
- 7.5. - Herencia
|
||||
- 7.6. - Herencia extendida
|
||||
- 7.7. - Polimorfismo
|
||||
- 7.8. - Pilares de la Programación Orientada a Objetos
|
||||
- 7.9. - Métodos especiales
|
||||
- 7.10. - Proyecto del Día 7
|
||||
- [Día 8 - Programa una consola de turnos](dia_08/README.md)
|
||||
- 8.1. - Instalar paquetes
|
||||
- 8.2. - Módulos y paquetes
|
||||
- 8.3. - Manejo de errores
|
||||
- 8.4. - pylint
|
||||
- 8.5. - unittest
|
||||
- 8.6. - Decoradores
|
||||
- 8.7. - Generadores
|
||||
- 8.8. - Proyecto del Día 8
|
||||
- [Día 9 - Programa un buscador de números de serie](dia_09/README.md)
|
||||
- 9.1. - Módulo collections
|
||||
- 9.2. - Módulos shutil & os
|
||||
- 9.3. - Módulo datetime
|
||||
- 9.4. - Módulo para medir el tiempo
|
||||
- 9.5. - Módulo math
|
||||
- 9.6. - Expresiones regulares
|
||||
- 9.7. - Comprimir y descomprimir archivos
|
||||
- 9.8. - Proyecto del Día 9
|
||||
- [Día 10 - Programa el juego "Invasión espacial"](dia_10/README.md)
|
||||
- 10.1. - Distancia entre dos puntos
|
||||
- 10.2. - Convertir el Juego en un Archivo Ejecutable (.exe)
|
||||
- [Día 11 - Programa un web scraping](dia_11/README.md)
|
||||
- 11.1. - Extraer elementos de una clase
|
||||
- [Día 12 - Programa un gestor de restaurantes](dia_12/README.md)
|
||||
- [Día 13 - Programa un asistente de voz](dia_13/README.md)
|
||||
- 13.1. - Librerias y módulos
|
||||
- 13.2. - Algunos problemas con las bibliotecas
|
||||
- 13.3. - Enlaces
|
||||
- [Día 14 - Programa un controlador de asistencia](dia_14/README.md)
|
||||
- 14.1. - Bibliotecas
|
||||
- [Día 15 - Programa un modelo de machine learning](dia_15/README.md)
|
||||
- 5.1. - Bibliotecas
|
||||
- 5.2. - Definiciones
|
||||
- 5.3. - Cuadernos de trabajo en Colab de google drive
|
||||
- [Día 16 - Programa una aplicación web de tareas pendientes](dia_16/README.md)
|
||||
- 16.1. - Entornos Virtuales
|
||||
- 16.2. - Módulos
|
||||
- 16.3. - Preparación de estructura de trabajo
|
||||
- 16.4. - Configurar url
|
||||
- 16.5. - Crear tabla de tareas
|
||||
- 16.6. - Configurar la vista
|
||||
- 16.7. - Configurar la vista de Detalle
|
||||
- 16.8. - Crear Links a Detalle
|
||||
- 16.9. - Agregar nueva tarea
|
||||
- 16.10. - Formulario para nueva tarea
|
||||
- 16.11. - Editar tarea
|
||||
- 16.12. - Eliminar tarea
|
||||
- 16.13. - Crear la lógica de Logueo / Deslogueo
|
||||
- 16.14. - Formulario de Logueo / Deslogueo
|
||||
- 16.15. - Restringir acceso
|
||||
- 16.16. - Información específica de usuario
|
||||
- 16.17. - Registrar nuevo usuario
|
||||
- 16.18. - Barra de búsquedas
|
||||
- 16.19. - Un estilo para todas las vistas
|
||||
- 16.20. - Estilo general
|
||||
- 16.21. - Estilo de barra superiores
|
||||
- 16.22. - estilo de la lista
|
||||
- 16.23. - Estilo de la barra de cerca
|
||||
- 16.24. - Terminar el sitio
|
||||
- [Día 17 - Extra bibliotecas para hacking ético](dia_17/README.md)
|
||||
- 17.1. - Bibliotecas
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user