diff --git a/evidencias/reto-01.md b/evidencias/reto-01.md new file mode 100644 index 0000000..44cdcb8 --- /dev/null +++ b/evidencias/reto-01.md @@ -0,0 +1,3 @@ +Fork realizado por Oscar2025 (mi usuario de github) +URL utilizado para el Fork: https://github.com/python-la-paz/psg-retos +URL resultante del fork: https://github.com/Oscar2512/psg-retos-forked \ No newline at end of file diff --git a/evidencias/reto-02.md b/evidencias/reto-02.md new file mode 100644 index 0000000..912b786 --- /dev/null +++ b/evidencias/reto-02.md @@ -0,0 +1,2 @@ +Evidencia del reto 02 +Rama creada: Switched to a new branch 'Oscar2512' diff --git a/evidencias/reto-03.md b/evidencias/reto-03.md new file mode 100644 index 0000000..f7f8e94 --- /dev/null +++ b/evidencias/reto-03.md @@ -0,0 +1,9 @@ +Se realizo el clonado local con exito + git clone https://github.com/Oscar2512/psg-retos-forked.git +Cloning into 'psg-retos-forked'... +remote: Enumerating objects: 35, done. +remote: Counting objects: 100% (35/35), done. +remote: Compressing objects: 100% (26/26), done. +remote: Total 35 (delta 18), reused 22 (delta 9), pack-reused 0 (from 0) +Receiving objects: 100% (35/35), 18.20 KiB | 123.00 KiB/s, done. +Resolving deltas: 100% (18/18), done. \ No newline at end of file diff --git a/evidencias/reto-04.md b/evidencias/reto-04.md new file mode 100644 index 0000000..49a07bf --- /dev/null +++ b/evidencias/reto-04.md @@ -0,0 +1,17 @@ +Git subido al github con exito despues de haber completado la autenticacion en el navegador +git push -u origin Oscar2512 +info: please complete authentication in your browser... +Enumerating objects: 13, done. +Counting objects: 100% (13/13), done. +Delta compression using up to 4 threads +Compressing objects: 100% (11/11), done. +Writing objects: 100% (12/12), 1.30 KiB | 332.00 KiB/s, done. +Total 12 (delta 4), reused 0 (delta 0), pack-reused 0 (from 0) +remote: Resolving deltas: 100% (4/4), completed with 1 local object. +remote: +remote: Create a pull request for 'Oscar2512' on GitHub by visiting: +remote: https://github.com/Oscar2512/psg-retos-forked/pull/new/Oscar2512 +remote: +To https://github.com/Oscar2512/psg-retos-forked.git + * [new branch] Oscar2512 -> Oscar2512 +branch 'Oscar2512' set up to track 'origin/Oscar2512'. \ No newline at end of file diff --git a/retos_01/ejercicio_01.md b/retos_01/ejercicio_01.md new file mode 100644 index 0000000..c4d9ca8 --- /dev/null +++ b/retos_01/ejercicio_01.md @@ -0,0 +1,31 @@ +## Biografía de Oscar Alvarado +### Información Personal + +**Nombre completo:** Oscar Ignacio Alvarado Silva +**Fecha de nacimiento:** *25 de diciembre de 2000* +**Edad:** **24 años** +**Ciudad:** *La paz, Bolivia* + +### Formación Académica: + +1. **Carrera actual:** *Informática en la universidad mayor de san andres* +2. **Estudios previos:** + - Medicina (3 años) detenida por razones personales + - Colegio Sagrados Corazones *(humanidades)* + +### Intereses y Pasiones + +- Tecnología en general +- **Celulares** +- **Computadoras** +- Programación +- Ciberseguridad *(meta de aprendizaje a futuro)* +- Hardware y su manejo como en reparacion de pc's + +### Habilidades Técnicas *(en desarrollo)* + +- Conocimientos muy básicos de: + - Git y GitHub + - HTML, Markdown + - Python (principiante) +- Manejo de herramientas ofimáticas como: excel, word y power point diff --git a/retos_01/ejercicio_02.md b/retos_01/ejercicio_02.md new file mode 100644 index 0000000..76eb39d --- /dev/null +++ b/retos_01/ejercicio_02.md @@ -0,0 +1,32 @@ +# Resumen de *Harry Potter y la Piedra Filosofal* + +## Introducción + +*Harry Potter y la Piedra Filosofal* es el primero de una saga de libros enfocada principalmente en la magia, escrita por J. K. Rowling introduce a harry potter al mundo de la magia con muchas aventuras de por medio. + + +## Personajes principales + +- **Harry Potter**: el prota. es un niño huerfano que descubre la verdad tras la muerte de sus padres y su ascendencia magica +- **Ron Weasley**: el mejor amigo del prota, de escasos recursos, pero muy divertido. +- **Hermione Granger**: la alumna mas inteligente del salon y proxima amiga de ambos protas. +- **Albus Dumbledore**: director de Hogwarts. +- **Lord Voldemort**: el enemigo de harry desde antes que naciera. + + +## Resumen rapido + +Harry es un niño huerfano que vive cno sus tios y su primo, estos son malos con desde el inicio aun que no se explica el porque. Un dia harry recibe una carta y tras varios intentos por partede sus tios de que no reciba la carta, este al final la lee y descubre que es un mago y tiene la opcion de irse a una escuela de magia y hechiceria muy lejos de su cruel familia y va sin dudar. + +Gracias a Hagrid (guardabosques del colegio), harry descubre la existencia de la piedra filosofal la cual sera crucial en el evento que esta por venir + +## Enlace al libro + +se puede leer el libro online a traves del sigueinte enlace: + +[Harry Potter y la piedra filosofal en pdf](https://biblioteca-digital.universidadcolumbia.edu.mx/acervo/LITERATURA/Harry_Potter_y_la_Piedra_Filosofal-J_K_Rowling.pdf) + + +## Imagen representativa + +![Portada del libro](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTlUQZeqenuFXPl_RqNCLVr2xwCXUkyCuLSow&s) diff --git a/retos_02/ejercicio_01.py b/retos_02/ejercicio_01.py new file mode 100644 index 0000000..82e6259 --- /dev/null +++ b/retos_02/ejercicio_01.py @@ -0,0 +1,10 @@ +a = int(input()) +b = int(input()) +suma = a + b +resta = a - b +multi = a * b +div = (b and (a/b)) or "division indefinida" +print("Suma: ", suma) +print("Resta: ", resta) +print("Multiplicacion: ", multi) +print("Division: ", div) \ No newline at end of file diff --git a/retos_02/ejercicio_02.py b/retos_02/ejercicio_02.py new file mode 100644 index 0000000..f95fb52 --- /dev/null +++ b/retos_02/ejercicio_02.py @@ -0,0 +1,4 @@ +sol = input().lower() == "true" +hum = int(input()) +sw = (sol and (hum<30)) +print(((sw) and "El sistema de riego no se activa.") or ((not sw) and "El sistema de riego se activa.")) \ No newline at end of file diff --git a/retos_02/ejercicio_03.py b/retos_02/ejercicio_03.py new file mode 100644 index 0000000..d0cc9f9 --- /dev/null +++ b/retos_02/ejercicio_03.py @@ -0,0 +1,12 @@ +frase = input().lower() +palabras = frase.split() +frase = frase.replace(" ", "").lower() +rev = frase[::-1] + +vocales=( + frase.count("a") + frase.count("e") + frase.count("i") + + frase.count("o") + frase.count("u") + ) +print("Cantidad de palabras:", len(palabras)) +print("Cantidad de vocales:", vocales) +print("Es palíndromo:", (frase == rev)) \ No newline at end of file diff --git a/retos_03/ejercicio_04.py b/retos_03/ejercicio_04.py new file mode 100644 index 0000000..497bb43 --- /dev/null +++ b/retos_03/ejercicio_04.py @@ -0,0 +1,21 @@ +libros = ( + ("978-3-16-148410-0", "EL QUIJOTE", "Miguel de Cervantes", 1605), + ("978-0-14-044913-6", "LA ODISEA", "Homero", -800), + ("978-0-452-28423-4", "1984", "George Orwell", 1949), + ("978-0-7432-7356-5", "EL GRAN GATSBY", "F. Scott Fitzgerald", 1925) +) + +catalogo = { + "978-3-16-148410-0": ("EL QUIJOTE", "Miguel de Cervantes", 1605), + "978-0-14-044913-6": ("LA ODISEA", "Homero", -800), + "978-0-452-28423-4": ("1984", "George Orwell", 1949), + "978-0-7432-7356-5": ("EL GRAN GATSBY", "F. Scott Fitzgerald", 1925) +} + +isbn = input() + +datos = catalogo.get(isbn) +print( + (datos and "Título: " + datos[0].title() + ", Autor: " + datos[1] + ", Año: " + str(datos[2])) + or "Libro no encontrado." +) diff --git a/retos_03/ejercicio_05.py b/retos_03/ejercicio_05.py new file mode 100644 index 0000000..e4dd71f --- /dev/null +++ b/retos_03/ejercicio_05.py @@ -0,0 +1,13 @@ +productos = input().split(", ") +precios = list(eval("[" + input() + "]")) + +total = sum(precios) + +caro = productos[precios.index(max(precios))] +barato = productos[precios.index(min(precios))] +ordenados = list(dict(sorted(zip(precios, productos))).values()) + +print("Total de la compra: " + str(round(total, 2))) +print("Producto más caro: " + caro) +print("Producto más barato: " + barato) +print("Productos ordenados por precio: " + ", ".join(ordenados)) \ No newline at end of file diff --git a/retos_03/ejercicio_06.py b/retos_03/ejercicio_06.py new file mode 100644 index 0000000..c586be0 --- /dev/null +++ b/retos_03/ejercicio_06.py @@ -0,0 +1,14 @@ +a1 = set(input().split(", ")) +a2 = set(input().split(", ")) + +comunes = a1 & a2 +exclusivas_jose = a1 - a2 +exclusivas_carlos = a2 - a1 +totCanciones = a1 | a2 + +compatibilidad = (len(comunes) / len(totCanciones) * 100) > 50 + +print("Canciones en común: " + ", ".join(comunes)) +print("Canciones exclusivas de Jose: " + ", ".join(exclusivas_jose)) +print("Canciones exclusivas de Carlos: " + ", ".join(exclusivas_carlos)) +print((compatibilidad and "Son Almas Gemelas Musicales.") or (not compatibilidad and "Son Amigos con Buen Gusto.")) \ No newline at end of file diff --git a/retos_03/ejercicio_07.py b/retos_03/ejercicio_07.py new file mode 100644 index 0000000..3b3abe7 --- /dev/null +++ b/retos_03/ejercicio_07.py @@ -0,0 +1,19 @@ +stock = { + "Aspirina": {"cantidad": 50, "precio": 10.99}, + "Ibuprofeno": {"cantidad": 30, "precio": 15.49}, + "Paracetamol": {"cantidad": 20, "precio": 8.99}, + "Amoxicilina": {"cantidad": 10, "precio": 25.00} +} + +med, cant = input().split(", ") +cant = int(cant) + +item = stock.get(med) + +print( + (not item and "Medicamento no encontrado.") or + (item and (item["cantidad"] < cant) and "No hay suficiente stock.") or + (item and (item["cantidad"] >= cant) and ( + "Total de la compra: " + str(round(cant * item["precio"], 2)) + )) +) diff --git a/retos_04/ejercicio_08.py b/retos_04/ejercicio_08.py new file mode 100644 index 0000000..e7c4b4b --- /dev/null +++ b/retos_04/ejercicio_08.py @@ -0,0 +1,12 @@ +v, p, e = input().split(",") +vehiculos = int(v) +peatones = len(p) +emergencia = e.lower().strip() == "true" +print(emergencia, e) + +print("Semáforo:", + (emergencia and "Verde") or + ((vehiculos > 70) and "Verde") or + ((peatones > 5) and "Rojo") or + "Amarillo" +) diff --git a/retos_04/ejercicio_09.py b/retos_04/ejercicio_09.py new file mode 100644 index 0000000..2c7da6e --- /dev/null +++ b/retos_04/ejercicio_09.py @@ -0,0 +1,23 @@ +texto = input() + +palabras_sin_contenido = [ + "el", "la", "los", "las", "de", "y", "a", "en", "o", "que", + "pero", "con", "por", "para", "un", "una", "es", "son", + "se", "del", "al", "lo" +] + +for simbolo in ".,;:!¿?¡": + texto = texto.replace(simbolo, "") + +palabras = (texto.lower()).split() + +frecuencias = {} +for palabra in palabras: + if palabra not in palabras_sin_contenido: + if palabra not in frecuencias: + frecuencias[palabra] = 0 + frecuencias[palabra] += 1 + +top3 = list(sorted(frecuencias, key=frecuencias.get))[-3:][::-1] + +print(top3) diff --git a/retos_04/ejercicio_10.py b/retos_04/ejercicio_10.py new file mode 100644 index 0000000..8edecde --- /dev/null +++ b/retos_04/ejercicio_10.py @@ -0,0 +1,21 @@ +rojas = 0 +verdes = 0 +plagas = 0 + +while True: + entrada = input().lower().strip() + if entrada == "empacar": + break + for color in entrada: + if color == "r": + rojas += 1 + elif color == "v": + verdes += 1 + elif color == "p": + plagas += 1 + +print("Cajas empacadas para Rojas:", rojas // 12) +print("Cajas empacadas para Verdes:", verdes // 12) +print("Cajas empacadas para Plagas:", plagas) # no se divide por el ejemplo de salida +#print("manzanas detectadas con plagas", plagas) deberia ser la salida + diff --git a/retos_05/ejercicio_11.py b/retos_05/ejercicio_11.py new file mode 100644 index 0000000..bb74bdb --- /dev/null +++ b/retos_05/ejercicio_11.py @@ -0,0 +1,15 @@ +def factorial_y_doble(n): + factorial = 1 + if(n>0): + for i in range(1, n + 1): + factorial *= i + elif (n<0): + print("no hay factorial de un numero negativo") + factorial=0 + doble=0 + return factorial, doble + doble = factorial * 2 + return factorial, doble +n = int(input()) +fact, dob = factorial_y_doble(n) +print(f"Factorial: {fact}, Doble: {dob}") diff --git a/retos_05/ejercicio_12.py b/retos_05/ejercicio_12.py new file mode 100644 index 0000000..9cf0a42 --- /dev/null +++ b/retos_05/ejercicio_12.py @@ -0,0 +1,24 @@ +equivalencias = { + "tz": "tazas", + "cda": "cucharadas", + "l": "litros", + "gr": "gramos", + "kg": "kilogramos", + "u": "unidades" +} + +linea = input() +print("Ingredientes") +print("------------") +ingredientes = linea.split(", ") +for ing in ingredientes: + nombre, cantidad = ing.split("=") + numero = "" + unidad = "" + for c in cantidad: + if c in "1234567890": + numero += c + else: + unidad += c + unidad_estandar = equivalencias.get(unidad, unidad) + print("*", nombre.capitalize(), numero, unidad_estandar) diff --git a/retos_05/ejercicio_13.py b/retos_05/ejercicio_13.py new file mode 100644 index 0000000..52422cd --- /dev/null +++ b/retos_05/ejercicio_13.py @@ -0,0 +1,11 @@ +frase = input().lower() +for simbolo in ".,;:!?": + frase = frase.replace(simbolo, "") +palabras = frase.split() +palabras_unicas = [] +for palabra in palabras: + if palabra not in palabras_unicas: + palabras_unicas.append(palabra) +palabras_unicas.sort() +print(palabras_unicas) + diff --git a/retos_06/ejercicio_14.py b/retos_06/ejercicio_14.py new file mode 100644 index 0000000..1f24965 --- /dev/null +++ b/retos_06/ejercicio_14.py @@ -0,0 +1,33 @@ +while True: + entrada = input() + if entrada.lower() == "salir": + break + + try: + partes = entrada.split(",") + if len(partes) != 3: + raise IndexError + + num1 = float(partes[0].strip()) + num2 = float(partes[1].strip()) + operador = partes[2].strip() + + if operador == "+": + print(num1 + num2) + elif operador == "-": + print(num1 - num2) + elif operador == "*": + print(num1 * num2) + elif operador == "/": + if num2 == 0: + raise ZeroDivisionError + print(num1 / num2) + else: + print("Operación no valida.") + + except ValueError: + print("Operación no valida.") + except ZeroDivisionError: + print("No se puede dividir por cero.") + except IndexError: + print("No hay suficientes elementos para realizar la operación.")