Restructure content and add notes from HolaMundo

Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
2023-05-20 09:36:26 +02:00
parent 64ed03f811
commit f4e9797c4b
430 changed files with 889 additions and 24 deletions

View 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
View 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
View 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")

View File

@@ -0,0 +1,9 @@
"""
Operador ternario
"""
edad = 15
mensaje = "Es mayor" if edad > 17 else "Es menor"
print(mensaje)

View 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")

View 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")

View File

@@ -0,0 +1,5 @@
for i in range(3):
for j in range(2):
print(f"{i}, {j}")

View 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

View 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
View 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))

View File

@@ -0,0 +1,3 @@
"""
Argumentos indefinidos (*args)
"""

View 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
View 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])

View 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)

View 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)

View 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
View 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)