diff --git a/README.md b/README.md index a4f9197..caf83cb 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,10 @@ de *Nichola Lacey* - [067](./trtl/turtle08.py) - [068](./trtl/turtle09.py) +## Retos Intermedios + +- [069-079](./interm/interm01.py) + ## Uso ```sh diff --git a/interm/interm.py b/interm/interm.py new file mode 100644 index 0000000..6f09945 --- /dev/null +++ b/interm/interm.py @@ -0,0 +1,224 @@ +from . import interm01 as ex01 +from common.common import ( + print_challenges, + user_input, + run_func, + clear +) + +def challenges01(): + select_ok = False + while not select_ok: + clear() + i, ex1 = print_challenges(ex01.interm001) + selection = user_input(i) + match selection: + case 1: + run_func(ex1.countries) + case 2: + run_func(ex1.country_pos) + case 3: + run_func(ex1.two_sports) + case 4: + run_func(ex1.del_subject) + case 5: + run_func(ex1.fav_food) + case 6: + run_func(ex1.ten_colours) + case 7: + run_func(ex1.four_nums) + case 8: + run_func(ex1.three_names) + case 9: + run_func(ex1.uninvite) + case 10: + run_func(ex1.tv_titles) + case 11: + run_func(ex1.nums_list) + case 'v': + return + case 's': + select_ok = True + exit(0) + case _: + continue + +#def challenges02(): +# select_ok = False +# while not select_ok: +# clear() +# i, ex2 = print_challenges(ex02.basics_002) +# selection = user_input(i) +# match selection: +# case 1: +# run_func(ex2.mayor) +# case 2: +# run_func(ex2.muy_alto) +# case 3: +# run_func(ex2.gracias) +# case 4: +# run_func(ex2.fav_color) +# case 5: +# run_func(ex2.clima) +# case 6: +# run_func(ex2.edad_conducir) +# case 7: +# run_func(ex2.alto_bajo) +# case 8: +# run_func(ex2.uno_dos_tres) +# case 'v': +# return +# case 's': +# exit(0) +# case _: +# continue +# +#def challenges03(): +# select_ok = False +# while not select_ok: +# clear() +# i, ex3 = print_challenges(ex03.basics_003) +# selection = user_input(i) +# match selection: +# case 1: +# run_func(ex3.name_length) +# case 2: +# run_func(ex3.fullname_length) +# case 3: +# run_func(ex3.full_name_lower) +# case 4: +# run_func(ex3.nursery) +# case 5: +# run_func(ex3.any_mayus) +# case 6: +# run_func(ex3.mambo_name) +# case 7: +# run_func(ex3.pig_latin) +# case 'v': +# return +# case 's': +# exit(0) +# 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 challenges05(): +# select_ok = False +# while not select_ok: +# clear() +# i, ex5 = print_challenges(ex05.basics_005) +# selection = user_input(i) +# match selection: +# case 1: +# run_func(ex5.name_three) +# case 2: +# run_func(ex5.name_num) +# case 3: +# run_func(ex5.name_nl) +# case 4: +# run_func(ex5.name_nl_num) +# case 5: +# run_func(ex5.times_table) +# case 6: +# run_func(ex5.count_down) +# case 7: +# run_func(ex5.mambo_name) +# case 8: +# run_func(ex5.may_add) +# case 9: +# run_func(ex5.up_or_down) +# case 10: +# run_func(ex5.guests) +# case 'v': +# return +# case 's': +# exit(0) +# case _: +# continue +# +#def challenges06(): +# select_ok = False +# while not select_ok: +# clear() +# i, ex6 = print_challenges(ex06.basics_006) +# selection = user_input(i) +# match selection: +# case 1: +# run_func(ex6.over50) +# case 2: +# run_func(ex6.last_5) +# case 3: +# run_func(ex6.add_another) +# case 4: +# run_func(ex6.party) +# case 5: +# run_func(ex6.compnum) +# case 6: +# run_func(ex6.between) +# case 7: +# run_func(ex6.bottles) +# case 'v': +# return +# case 's': +# exit(0) +# case _: +# continue +# +#def challenges07(): +# select_ok = False +# while not select_ok: +# clear() +# i, ex7 = print_challenges(ex07.basics_007) +# selection = user_input(i) +# match selection: +# case 1: +# run_func(ex7.rand_range) +# case 2: +# run_func(ex7.rand_choice) +# case 3: +# run_func(ex7.rand_game) +# case 4: +# run_func(ex7.rand_pick) +# case 5: +# run_func(ex7.rand_10) +# case 6: +# run_func(ex7.rand_10_upgrade) +# case 7: +# run_func(ex7.rand_quiz) +# case 8: +# run_func(ex7.rand_color) +# case 'v': +# return +# case 's': +# exit(0) +# case _: +# continue diff --git a/interm/interm01.py b/interm/interm01.py new file mode 100644 index 0000000..24809d1 --- /dev/null +++ b/interm/interm01.py @@ -0,0 +1,171 @@ +class interm001: + + def countries(self): + """Create a tuple containing the names of five countries and display the + whole tuple. Ask the user to enter one of the countries that have been + shown to them and then display the index number (i.e. position in the + list) of that item in the tuple.""" + counties = ('Peru', 'Bolivia', 'Brazil', 'Chile', 'Argentina') + print('Paises:', ', '.join(counties)) + sel = input("Ingresa uno de los países mostrados: ") + print(f"Indice: {counties.index(sel)}") + + def country_pos(self): + """Add to program 069 to ask the user to enter a number and display the + country in that position.""" + counties = ('Peru', 'Bolivia', 'Brazil', 'Chile', 'Argentina') + print('Indice | Pais\n------------------') + for i,c in enumerate(counties): + print(f" {i} | {c}") + num = int(input("\nIngresa un indice: ")) + if num < len(counties): + print(counties[num]) + else: + print(f"El índice {num} no existe") + + def two_sports(self): + """Create a list of two sports. Ask the user what their favourite sport + is and add this to the end of the list. Sort the list and display it.""" + sports = ['Kaiju Big Battle', 'Cheese rolling '] + fav = input("Ingresa tu deporte favorito: ") + sports.append(fav) + sports.sort() + print("Deportes: ", ", ".join(sports)) + + def del_subject(self): + """Create a list of six school subjects. Ask the user which of these + subjects they don’t like. Delete the subject they have chosen from the + list before you display the list again.""" + subjs = ['Redes', 'POO', 'SQL', 'Algoritmos', 'Hardware'] + print("Materias: ", ", ".join(subjs)) + sel = input("¿Cual de estas materias no te agrada?: ") + if sel in subjs: + subjs.remove(sel) + else: + print(f"{sel} no está en la lista") + print("Materias: ", ", ".join(subjs)) + + def fav_food(self): + """Ask the user to enter four of their favourite foods and store them in + a dictionary so that they are indexed with numbers starting from 1. + Display the dictionary in full, showing the index number and the item. + Ask them which they want to get rid of and remove it from the list. + Sort the remaining data and display the dictionary.""" + favs = {} + print("Ingresa 4 platos/comidas favoritas") + for i in range(1,5): + fav = input(f"Ingresa tu comida favorita para la posición {i}: ") + favs[i] = fav + print(*[str(key) + ':' + str(value) for key,value in favs.items()]) + sel = int(input("Ingresa el indice del menos favorito: ")) + favs.pop(sel) + print(', '.join(sorted(favs.values()))) + + def ten_colours(self): + """Enter a list of ten colours. Ask the user for a starting number + between 0 and 4 and an end number between 5 and 9. Display the list for + those colours between the start and end numbers the user input.""" + colors = ['Amarillo', 'Azul', 'Celeste', 'Blanco', 'Magenta', + 'Naranjo', 'Negro', 'Rojo', 'Rosado', 'Verde'] + num_1 = int(input("Ingresa un número entre 0 y 4: ")) + num_2 = int(input("Ingresa un número entre 5 y 9: ")) + print(', '.join(colors[num_1:num_2+1])) + + def four_nums(self): + """Create a list of four three-digit numbers. Display the list to the + user, showing each item from the list on a separate line. Ask the user + to enter a three-digit number. If the number they have typed in matches + one in the list, display the position of that number in the list, + otherwise display the message \"That is not in the list\".""" + nums = [475, 912, 661, 101] + print(*[str(value)+'\n' for value in nums]) + sel = int(input("Ingresa un número de 3 digitos: ")) + if sel in nums: + print(f"{sel} está en el índice: {nums.index(sel)}") + else: + print(f"{sel} no está en la lista") + + + def three_names(self): + """Ask the user to enter the names of three people they want to invite + to a party and store them in a list. After they have entered all three + names, ask them if they want to add another. If they do, allow them to + add more names until they answer \"no\". When they answer \"no\", + display how many people they have invited to the party.""" + names = [] + for i in range(1,4): + name = input(f"Ingresa el nombre nro. {i}: ") + names.append(name) + while True: + ask = input("¿Deseas agregar mas personas? (si|no): ").lower() + if ask == 'si': + name = input(f"Ingresa el nombre nro. {len(names)+1}: ") + names.append(name) + else: + break + print(f"Has invitado {len(names)} personas") + + + def uninvite(self): + """Change program 076 so that once the user has completed their list of + names, display the full list and ask them to type in one of the names on + the list. Display the position of that name in the list. Ask the user if + they still want that person to come to the party. If they answer \"no\", + delete that entry from the list and display the list again.""" + names = [] + for i in range(1,4): + name = input(f"Ingresa el nombre nro. {i}: ") + names.append(name) + while True: + ask = input("¿Deseas agregar mas personas? (s|n): ").lower() + if ask == 's': + name = input(f"Ingresa el nombre nro. {len(names)+1}: ") + names.append(name) + else: + break + print("\nLista de invitados:") + for name in names: + print(' '+name) + name = input("\nIngresa el nombre de un invitado: ") + if name in names: + print(f"Invitado {name}, en la posición {names.index(name)}") + resp = input("¿Quieres mantener la invitación? (si|no): ").lower() + if resp == 'no': + names.remove(name) + print("Lista de invitados:") + for name in names: + print(' '+name) + else: + print(f"{name} no está en la lista de invitados") + + def tv_titles(self): + """Create a list containing the titles of four TV programmes and display + them on separate lines. Ask the user to enter another show and a position + they want it inserted into the list. Display the list again, showing all + five TV programmes in their new positions.""" + tv = ['Rick & Morty', 'South Park', 'American Dad', 'Family Guy'] + for show in tv: + print(show) + new_show = input("\nIngresa una serie: ") + new_pos = int(input("Ingresa una posición: ")) + tv.insert(new_pos, new_show) + for show in tv: + print(show) + + def nums_list(self): + """Create an empty list called \"nums\". Ask the user to enter numbers. + After each number is entered, add it to the end of the nums list and + display the list. Once they have entered three numbers, ask them if they + still want the last number they entered saved. If they say \"no\", + remove the last item from the list. Display the list of numbers.""" + nums = [] + while True: + num = input("Ingresa un número: ") + nums.append(num) + print('Lista:' ,', '.join(nums)) + if len(nums) >= 3: + resp = input("¿Deseas mantener el último número agregado? (si|no): ").lower() + if resp == 'no': + nums.pop() + break + print('Lista:' ,', '.join(nums)) diff --git a/main.py b/main.py index c55ca32..9afacfc 100755 --- a/main.py +++ b/main.py @@ -2,13 +2,14 @@ from basic import basic from trtl import trtl +from interm import interm from common.common import clear, user_input, opcs_default def toc(): content="""\tContenido\n 1) Basicos 001-059 2) Turtle 060-068 - 3) Intermedio 069-123 + 3) Intermedios 069-123 4) Tkinter 124-138 5) SQLite 139-145 ... @@ -64,7 +65,39 @@ def interm_challenges(): 6) Interm 111-117 7) Interm 118-123 """ - print(content) + select_ok = False + while not select_ok: + clear() + print(content) + opcs_default(1) + selection = user_input(1) + match selection: + case 1: + interm.challenges01() + case 2: + #interm.challenges02() + pass + case 3: + #interm.challenges03() + pass + case 4: + #interm.challenges04() + pass + case 5: + #interm.challenges05() + pass + case 6: + #interm.challenges06() + pass + case 7: + #interm.challenges07() + pass + case 'v': + return + case 's': + exit(0) + case _: + continue def tkinter_challenges(): content = """