From 5ae8c65f1aad73af13ffa63191f42cb970ad412c Mon Sep 17 00:00:00 2001 From: devfzn Date: Mon, 13 Nov 2023 13:07:55 -0300 Subject: [PATCH] +: intermedios 096-104 --- interm/interm.py | 63 +++++++++--------- interm/interm04.py | 159 +++++++++++++++++++++++++++++++++++++++++++++ main.py | 7 +- 3 files changed, 195 insertions(+), 34 deletions(-) create mode 100644 interm/interm04.py diff --git a/interm/interm.py b/interm/interm.py index 30642bd..cb71b0d 100644 --- a/interm/interm.py +++ b/interm/interm.py @@ -1,6 +1,7 @@ from . import interm01 as ex01 from . import interm02 as ex02 from . import interm03 as ex03 +from . import interm04 as ex04 from common.common import ( print_challenges, user_input, @@ -105,36 +106,38 @@ def challenges03(): case _: continue -#def challenges04(): -# select_ok = False -# while not select_ok: -# clear() -# i, ex4 = print_challenges(ex04.basics_004) -# selection = user_input(i) -# match selection: -# case 1: -# run_func(ex4.decims) -# case 2: -# run_func(ex4.decims_round) -# case 3: -# run_func(ex4.square_root) -# case 4: -# run_func(ex4.pi_round) -# case 5: -# run_func(ex4.circle_area) -# case 6: -# run_func(ex4.cyl_vol) -# case 7: -# run_func(ex4.friendly_div) -# case 8: -# run_func(ex4.circ_trian) -# case 'v': -# return -# case 's': -# exit(0) -# case _: -# continue -# +def challenges04(): + select_ok = False + while not select_ok: + clear() + i, ex4 = print_challenges(ex04.interm004) + selection = user_input(i) + match selection: + case 1: + run_func(ex4.two_d) + case 2: + run_func(ex4.sel_row_col) + case 3: + run_func(ex4.sel_row) + case 4: + run_func(ex4.change_val) + case 5: + run_func(ex4.bidims_dict) + case 6: + run_func(ex4.bidict) + case 7: + run_func(ex4.user_data) + case 8: + run_func(ex4.dict_show_filter) + case 9: + run_func(ex4.dict_remove) + case 'v': + return + case 's': + exit(0) + case _: + continue + #def challenges05(): # select_ok = False # while not select_ok: diff --git a/interm/interm04.py b/interm/interm04.py new file mode 100644 index 0000000..2d74028 --- /dev/null +++ b/interm/interm04.py @@ -0,0 +1,159 @@ +class interm004: + + def two_d(self): + """Create the following using a simple 2D list using the standard Python + indexing + - 0 1 2 + ━━━━━━━━━━━━━━━ + 0 2 5 8 + 1 3 7 4 + 2 1 6 9 + 3 4 2 0 + """ + bidims = [[2,5,8],[3,7,4],[1,6,9],[4,2,0]] + print(" | 0 | 1 | 2 |\n━━━━━━━━━━━━━━━") + for i in range(len(bidims)): + print(i, '|', ' | '.join(map(str, bidims[i])), end=' |\n') + + def sel_row_col(self): + """Using the 2D list from program 096, ask the user to select a row and + a column and display that value.""" + bidims = [[2,5,8],[3,7,4],[1,6,9],[4,2,0]] + print(" | 0 | 1 | 2 |\n━━━━━━━━━━━━━━━") + for i in range(len(bidims)): + print(i, '|', ' | '.join(map(str, bidims[i])), end=' |\n') + sel_r = int(input("\nSelecciona una fila: ")) + sel_c = int(input("Selecciona una columna: ")) + if sel_r < len(bidims) and sel_c < len(bidims[0]): + print(bidims[sel_r][sel_c]) + else: + print("Fuera de rango") + + def sel_row(self): + """Using the 2D list from program 096, ask the user which row they would + like displayed and display just that row. Ask them to enter a new value + and add it to the end of the row and display the row again.""" + bidims = [[2,5,8],[3,7,4],[1,6,9],[4,2,0]] + print(" | 0 | 1 | 2 |\n━━━━━━━━━━━━━━━") + for i in range(len(bidims)): + print(i, '|', ' | '.join(map(str, bidims[i])), end=' |\n') + sel_r = int(input("\nSelecciona una fila: ")) + if sel_r < len(bidims): + print(bidims[sel_r]) + new_value = int(input("Ingresa un valor: ")) + bidims[sel_r][-1] = new_value + print(bidims[sel_r]) + else: + print("Fuera de rango") + + def change_val(self): + """Change your previous program to ask the user which row they want + displayed. Display that row. Ask which column in that row they want + displayed and display the value that is held there. Ask the user if + they want to change the value. If they do, ask for a new value and + change the data. Finally, display the whole row again.""" + bidims = [[2,5,8],[3,7,4],[1,6,9],[4,2,0]] + print(" | 0 | 1 | 2 |\n━━━━━━━━━━━━━━━") + for i in range(len(bidims)): + print(i, '|', ' | '.join(map(str, bidims[i])), end=' |\n') + sel_r = int(input("\nSelecciona una fila: ")) + if sel_r < len(bidims): + print(bidims[sel_r]) + sel_c = int(input("Selecciona una columna: ")) + if sel_c < len(bidims[0]): + print(bidims[sel_r][sel_c]) + resp = input("¿Quieres cambiar este valor? (s|n): ").lower() + if resp == 's': + print(bidims[sel_r]) + new_value = int(input("Ingresa un valor: ")) + bidims[sel_r][sel_c] = new_value + else: + print("Fuera de rango") + else: + print("Fuera de rango") + print(bidims[sel_r]) + + def bidims_dict(self): + """Create the following using a 2D dictionary showing the sales each + person has made in the different geographical regions: + - N S E W + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + John 3056 8463 8441 2694 + Tom 4832 6786 4737 3612 + Anne 5239 4802 5820 1859 + Fiona 3904 3645 8821 2451 + """ + bidict = {"John":{'N':3056, 'S':8463, 'E':8441, 'W':2694}, + "Tom":{'N':4832, 'S':6786, 'E':4737, 'W':3612}, + "Anne":{'N':5239, 'S':4802, 'E':5820, 'W':1859}, + "Fiona":{'N':3904, 'S':3645, 'E':8821, 'W':2451}} + print(" | N | S | E | W |") + print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") + for name in bidict: + print(name.rjust(5), '|', ' | '.join(map(str, bidict[name].values())), end=' |\n') + + def bidict(self): + """Using program 100, ask the user for a name and a region. Display the + relevant data. Ask the user for the name and region of data they want + to change and allow them to make the alteration to the sales figure. + Display the sales for all regions for the name they choose.""" + bidict = {"John":{'N':3056, 'S':8463, 'E':8441, 'W':2694}, + "Tom":{'N':4832, 'S':6786, 'E':4737, 'W':3612}, + "Anne":{'N':5239, 'S':4802, 'E':5820, 'W':1859}, + "Fiona":{'N':3904, 'S':3645, 'E':8821, 'W':2451}} + self.bidims_dict() + name = input("\nIngresa un nombre del cuadro: ").title() + reg = input("Ingresa un sector: ").upper() + print(bidict[name][reg]) + new_val = int(input("Ingresa el nuevo valor: ")) + bidict[name][reg] = new_val + print(', '.join(map(str, bidict[name].values()))) + + def user_data(self): + """Ask the user to enter the name, age and shoe size for four people. + Ask for the name of one of the people in the list and display their age + and shoe size.""" + data = {} + print("Se solicitarán 4 usuarios y su respectivos datos") + for i in range(4): + name = input(f"{i+1} Ingresa un nombre: ").capitalize() + age = int(input(f"Ingresa la edad de {name}: ")) + shoe = int(input(f"Ingresa cuanto calza {name}: ")) + data[name]={"Edad":age, "Calzado":shoe} + name = input("Ingresa uno de los nombres agregados anteriormente: ").capitalize() + print(*[str(k) + ':' + str(v) for k,v in data[name].items()]) + + def dict_show_filter(self): + """Adapt program 102 to display the names and ages of all the people + in the list but do not show their shoe size.""" + data = {} + print("Se solicitarán 4 usuarios y su respectivos datos") + for i in range(4): + name = input(f"{i+1} Ingresa un nombre: ").capitalize() + age = int(input(f"Ingresa la edad de {name}: ")) + shoe = int(input(f"Ingresa cuanto calza {name}: ")) + data[name]={"Edad":age, "Calzado":shoe} + for name in data.keys(): + print("Nombre:", name, "Edad:", data[name]["Edad"]) + + def dict_remove(self): + """After gathering the four names, ages and shoe sizes, ask the user to + enter the name of the person they want to remove from the list. Delete + this row from the data and display the other rows on separate lines.""" + data = {} + print("Se solicitarán 4 usuarios y su respectivos datos") + for i in range(4): + name = input(f"{i+1} Ingresa un nombre: ").capitalize() + age = int(input(f"Ingresa la edad de {name}: ")) + shoe = int(input(f"Ingresa cuanto calza {name}: ")) + data[name]={"Edad":age, "Calzado":shoe} + for name in data.keys(): + print("Nombre:", name, + "Edad:", data[name]["Edad"], + "Talla:", data[name]["Calzado"]) + name = input("Ingresa el nombre del usuario a borrar: ").capitalize() + data.pop(name) + for name in data.keys(): + print("Nombre:", name, + "Edad:", data[name]["Edad"], + "Talla:", data[name]["Calzado"]) diff --git a/main.py b/main.py index b9e8d23..d018267 100755 --- a/main.py +++ b/main.py @@ -60,7 +60,7 @@ def interm_challenges(): 1) Interm 069-079 2) Interm 080-087 3) Interm 088-095 - 4) Interm 096-103 + 4) Interm 096-104 5) Interm 105-110 6) Interm 111-117 7) Interm 118-123 @@ -70,7 +70,7 @@ def interm_challenges(): clear() print(content) opcs_default(1) - selection = user_input(3) + selection = user_input(4) match selection: case 1: interm.challenges01() @@ -79,8 +79,7 @@ def interm_challenges(): case 3: interm.challenges03() case 4: - #interm.challenges04() - pass + interm.challenges04() case 5: #interm.challenges05() pass