Skip to content

Commit ed34297

Browse files
authored
Merge pull request mouredev#7239 from davidrguez98/main
#11 - Python
2 parents a2d1acf + e253acf commit ed34297

File tree

2 files changed

+203
-0
lines changed

2 files changed

+203
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Explora el concepto de manejo de excepciones según tu lenguaje.
4+
* Fuerza un error en tu código, captura el error, imprime dicho error
5+
* y evita que el programa se detenga de manera inesperada.
6+
* Prueba a dividir "10/0" o acceder a un índice no existente
7+
* de un listado para intentar provocar un error.
8+
*
9+
* DIFICULTAD EXTRA (opcional):
10+
* Crea una función que sea capaz de procesar parámetros, pero que también
11+
* pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
12+
* corresponderse con un tipo de excepción creada por nosotros de manera
13+
* personalizada, y debe ser lanzada de manera manual) en caso de error.
14+
* - Captura todas las excepciones desde el lugar donde llamas a la función.
15+
* - Imprime el tipo de error.
16+
* - Imprime si no se ha producido ningún error.
17+
* - Imprime que la ejecución ha finalizado.
18+
*/ """
19+
20+
# EJERCICIO
21+
22+
try:
23+
x = 10 / 0
24+
print(x)
25+
except Exception as error:
26+
print(f"Se ha producido un error: {error}.")
27+
28+
try:
29+
y = [1, 2, 3, 4]
30+
print(y[4])
31+
except Exception as error:
32+
print(f"Se ha producido un error: {error}.")
33+
34+
#DIFICULTAD EXTRA
35+
36+
class StrTypeError(Exception):
37+
pass
38+
39+
40+
def process_params(parameters: list):
41+
42+
if len(parameters) < 3:
43+
raise IndexError()
44+
elif parameters[1] == 0:
45+
raise ZeroDivisionError()
46+
elif type(parameters[2]) == str:
47+
raise StrTypeError(
48+
"El tercer elemento no puede ser una cadena de texto.")
49+
50+
print(parameters[2])
51+
print(parameters[0]/parameters[1])
52+
print(parameters[2] + 5)
53+
54+
55+
try:
56+
process_params([1, 2, 3, 4])
57+
except IndexError as e:
58+
print("El número de elementos de la lista debe ser mayor que dos.")
59+
except ZeroDivisionError as e:
60+
print("El segundo elemento de la lista no puede ser un cero.")
61+
except StrTypeError as e:
62+
print(f"{e}")
63+
except Exception as e:
64+
print(f"Se ha producido un error inesperado: {e}")
65+
else:
66+
print("No se ha producido ningún error.")
67+
finally:
68+
print("El programa finaliza sin detenerse.")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
""" /*
2+
* IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio.
3+
*
4+
* EJERCICIO:
5+
* Desarrolla un programa capaz de crear un archivo que se llame como
6+
* tu usuario de GitHub y tenga la extensión .txt.
7+
* Añade varias líneas en ese fichero:
8+
* - Tu nombre.
9+
* - Edad.
10+
* - Lenguaje de programación favorito.
11+
* Imprime el contenido.
12+
* Borra el fichero.
13+
*
14+
* DIFICULTAD EXTRA (opcional):
15+
* Desarrolla un programa de gestión de ventas que almacena sus datos en un
16+
* archivo .txt.
17+
* - Cada producto se guarda en una línea del archivo de la siguiente manera:
18+
* [nombre_producto], [cantidad_vendida], [precio].
19+
* - Siguiendo ese formato, y mediante terminal, debe permitir añadir, consultar,
20+
* actualizar, eliminar productos y salir.
21+
* - También debe poseer opciones para calcular la venta total y por producto.
22+
* - La opción salir borra el .txt.
23+
*/ """
24+
25+
import os
26+
27+
#EJERCICIO
28+
29+
file_name = "davidrguez98.txt"
30+
31+
with open(file_name, "w") as file:
32+
file.write("David Rodriguez")
33+
file.write("\n26")
34+
file.write("\nPython")
35+
36+
with open(file_name, "r") as file:
37+
print(file.read())
38+
39+
os.remove(file_name)
40+
41+
#DIFICULTAD EXTRA
42+
43+
sale_list = "sale_list.txt"
44+
45+
open(sale_list, "a")
46+
47+
while True:
48+
print("1. Añadir producto.")
49+
print("2. Consultar producto.")
50+
print("3. Actualizar producto.")
51+
print("4. Ver lista de productos")
52+
print("5. Eliminar producto.")
53+
print("6. Calcular la venta total.")
54+
print("7. Calcular venta por producto.")
55+
print("8. Salir del programa")
56+
57+
option = input("\nSelecciona una opción: ")
58+
59+
match option:
60+
case("1"):
61+
name_product = input("Nombre del producto: ")
62+
quantity_product = input("Cantidad: ")
63+
price_product = input("Precio del producto: ")
64+
65+
with open(sale_list, "a") as file:
66+
file.write(f"{name_product}, {quantity_product}, {price_product}\n")
67+
68+
case("2"):
69+
name_product = input("¿Qué producto quieres consultar?: ")
70+
with open(sale_list, "r") as file:
71+
for line in file.readlines():
72+
if line.split(", ")[0] == name_product:
73+
print(line)
74+
break
75+
else:
76+
print("\nEl producto no se ha encontrado.\n")
77+
78+
case("3"):
79+
name_product = input("¿Qué producto quieres actualizar?: ")
80+
quantity_product = input("Nueva cantidad: ")
81+
price_product = input("Nuevo precio: ")
82+
83+
with open(sale_list, "r") as file:
84+
lines = file.readlines()
85+
with open(sale_list, "w") as file:
86+
for line in lines:
87+
if line.split(", ")[0] == name_product:
88+
file.write(f"{name_product}, {quantity_product}, {price_product}\n")
89+
else:
90+
file.write(line)
91+
92+
93+
case("4"):
94+
with open(sale_list, "r") as file:
95+
print(file.read())
96+
97+
case("5"):
98+
name_product = input("¿Qué producto quieres eliminar?: ")
99+
100+
with open(sale_list, "r") as file:
101+
lines = file.readlines()
102+
with open(sale_list, "w") as file:
103+
for line in lines:
104+
if line.split(", ")[0] != name_product:
105+
file.write(line)
106+
107+
case("6"):
108+
total = 0
109+
with open(sale_list, "r") as file:
110+
for line in file.readlines():
111+
products_value = line.split(", ")
112+
quantity_product = int(products_value[1])
113+
price_product = float(products_value[2])
114+
total += quantity_product * price_product
115+
print(total)
116+
117+
case("7"):
118+
name_product = input("¿De que producto quieres saber la venta total?: ")
119+
120+
with open(sale_list, "r") as file:
121+
for line in file.readlines():
122+
if line.split(", ")[0] == name_product:
123+
quantity_product = int(line.split(", ")[1])
124+
price_product = float(line.split(", ")[2])
125+
print(quantity_product * price_product)
126+
else:
127+
print("El producto no se encuentra en la lista.")
128+
129+
case("8"):
130+
os.remove(sale_list)
131+
break
132+
133+
case("9"):
134+
print("La opción marcada no es correcta. Escoge un número del 1 al 7.")
135+

0 commit comments

Comments
 (0)