Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
adbd459
Evidencia del reto 01
Oscar2512 Sep 4, 2025
3e64f3b
Evidencia del reto 02
Oscar2512 Sep 4, 2025
c10e327
Evidencia del reto 03
Oscar2512 Sep 4, 2025
be51005
Evidencia del reto 04
Oscar2512 Sep 4, 2025
1a3d12e
estructura de retos creada y reto 5 completo
Oscar2512 Sep 4, 2025
f938c2e
reto 6 completado con una pequeña autobiografia ahora agregado al git
Oscar2512 Sep 4, 2025
e9f2045
reto 7 completado con un pequeño resumen de harry potter y la piedra …
Oscar2512 Sep 4, 2025
c2435ee
reto 8 completado con un truco de orden de prioridad saltando una div…
Oscar2512 Sep 4, 2025
ce8e9f9
reto 9 completado mediante el uso de operadores logicos simples y com…
Oscar2512 Sep 5, 2025
fc93ae6
reto 10 completado mediante el uso de un artificio que reemplaza los …
Oscar2512 Sep 5, 2025
210ba90
reto 11 completado utilizando tuplas de datos
Oscar2512 Sep 5, 2025
814b413
reto 12 completado mediante el uso de un truco con zip volviendolos t…
Oscar2512 Sep 6, 2025
f8a3e6d
reto 12 completado en el cual se trato a los datos ingresados como co…
Oscar2512 Sep 6, 2025
f7956bb
reto 14 completado mediante la ventaja de que los datos se encuentran…
Oscar2512 Sep 6, 2025
7bb5cf3
reto 15 completado, se utilizo el orden de la operacion or paara decidir
Oscar2512 Sep 6, 2025
087cf1d
reto 16 completado, para el conteo de las palabras repetidas se utili…
Oscar2512 Sep 6, 2025
9cf0e24
reto 17 completado
Oscar2512 Sep 6, 2025
c3acd4b
reto 18 completado, la funcion devolvera 2 valores en 2 variables sim…
Oscar2512 Sep 6, 2025
2c56641
reto 19 completado, para la cantidad y unidad se los tomo como cadena…
Oscar2512 Sep 6, 2025
70ab98a
reto 20 completado, se agrego las palabras en un vector con el fin de…
Oscar2512 Sep 6, 2025
eaf4954
reto 20 completado y se agrego el manejor de excepciones correspondiente
Oscar2512 Sep 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions evidencias/reto-01.md
Original file line number Diff line number Diff line change
@@ -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
2 changes: 2 additions & 0 deletions evidencias/reto-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Evidencia del reto 02
Rama creada: Switched to a new branch 'Oscar2512'
9 changes: 9 additions & 0 deletions evidencias/reto-03.md
Original file line number Diff line number Diff line change
@@ -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.
17 changes: 17 additions & 0 deletions evidencias/reto-04.md
Original file line number Diff line number Diff line change
@@ -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'.
31 changes: 31 additions & 0 deletions retos_01/ejercicio_01.md
Original file line number Diff line number Diff line change
@@ -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
32 changes: 32 additions & 0 deletions retos_01/ejercicio_02.md
Original file line number Diff line number Diff line change
@@ -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)
10 changes: 10 additions & 0 deletions retos_02/ejercicio_01.py
Original file line number Diff line number Diff line change
@@ -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)
4 changes: 4 additions & 0 deletions retos_02/ejercicio_02.py
Original file line number Diff line number Diff line change
@@ -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."))
12 changes: 12 additions & 0 deletions retos_02/ejercicio_03.py
Original file line number Diff line number Diff line change
@@ -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))
21 changes: 21 additions & 0 deletions retos_03/ejercicio_04.py
Original file line number Diff line number Diff line change
@@ -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."
)
13 changes: 13 additions & 0 deletions retos_03/ejercicio_05.py
Original file line number Diff line number Diff line change
@@ -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))
14 changes: 14 additions & 0 deletions retos_03/ejercicio_06.py
Original file line number Diff line number Diff line change
@@ -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."))
19 changes: 19 additions & 0 deletions retos_03/ejercicio_07.py
Original file line number Diff line number Diff line change
@@ -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))
))
)
12 changes: 12 additions & 0 deletions retos_04/ejercicio_08.py
Original file line number Diff line number Diff line change
@@ -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"
)
23 changes: 23 additions & 0 deletions retos_04/ejercicio_09.py
Original file line number Diff line number Diff line change
@@ -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)
21 changes: 21 additions & 0 deletions retos_04/ejercicio_10.py
Original file line number Diff line number Diff line change
@@ -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

15 changes: 15 additions & 0 deletions retos_05/ejercicio_11.py
Original file line number Diff line number Diff line change
@@ -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}")
24 changes: 24 additions & 0 deletions retos_05/ejercicio_12.py
Original file line number Diff line number Diff line change
@@ -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)
11 changes: 11 additions & 0 deletions retos_05/ejercicio_13.py
Original file line number Diff line number Diff line change
@@ -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)

33 changes: 33 additions & 0 deletions retos_06/ejercicio_14.py
Original file line number Diff line number Diff line change
@@ -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.")