From f9145a4b566d6cf2304be7b787cdf9fb40b3db4b Mon Sep 17 00:00:00 2001 From: devfzn Date: Sat, 11 Nov 2023 00:09:22 -0300 Subject: [PATCH] +: turtle 060-068 --- README.md | 15 +++++++++++ basic/basic.py | 37 --------------------------- basic/basic01.py | 2 +- common/common.py | 28 +++++++++++++++++--- imgs/pattern_067.png | Bin 0 -> 13186 bytes main.py | 33 ++++++++++++------------ trtl/example01.py | 15 +++++++++++ trtl/example02.py | 18 +++++++++++++ trtl/example03.py | 28 ++++++++++++++++++++ trtl/trtl.py | 59 +++++++++++++++++++++++++++++++++++++++++++ trtl/turtle01.py | 19 ++++++++++++++ trtl/turtle02.py | 20 +++++++++++++++ trtl/turtle03.py | 17 +++++++++++++ trtl/turtle04.py | 56 ++++++++++++++++++++++++++++++++++++++++ trtl/turtle05.py | 23 +++++++++++++++++ trtl/turtle06.py | 48 +++++++++++++++++++++++++++++++++++ trtl/turtle07.py | 27 ++++++++++++++++++++ trtl/turtle08.py | 16 ++++++++++++ trtl/turtle09.py | 29 +++++++++++++++++++++ 19 files changed, 432 insertions(+), 58 deletions(-) create mode 100644 imgs/pattern_067.png create mode 100644 trtl/example01.py create mode 100644 trtl/example02.py create mode 100644 trtl/example03.py create mode 100644 trtl/trtl.py create mode 100644 trtl/turtle01.py create mode 100644 trtl/turtle02.py create mode 100644 trtl/turtle03.py create mode 100644 trtl/turtle04.py create mode 100644 trtl/turtle05.py create mode 100644 trtl/turtle06.py create mode 100644 trtl/turtle07.py create mode 100644 trtl/turtle08.py create mode 100644 trtl/turtle09.py diff --git a/README.md b/README.md index faf7ef9..a4f9197 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,21 @@ de *Nichola Lacey* - [012-019](./basic/basic02.py) - [020-026](./basic/basic03.py) - [027-034](./basic/basic04.py) +- [035-044](./basic/basic05.py) +- [045-051](./basic/basic06.py) +- [052-059](./basic/basic07.py) + +## Retos Turtle + +- [060](./trtl/turtle01.py) +- [061](./trtl/turtle02.py) +- [062](./trtl/turtle03.py) +- [063](./trtl/turtle04.py) +- [064](./trtl/turtle05.py) +- [065](./trtl/turtle06.py) +- [066](./trtl/turtle07.py) +- [067](./trtl/turtle08.py) +- [068](./trtl/turtle09.py) ## Uso diff --git a/basic/basic.py b/basic/basic.py index f47b090..e223f90 100644 --- a/basic/basic.py +++ b/basic/basic.py @@ -11,43 +11,6 @@ from common.common import ( run_func, clear ) - -def challenges_sublist(): - choices = 4 - select_ok = False - while not select_ok: - clear() - selection = user_input(choices) - match selection: - case 1: - challenges01() - case 2: - challenges02() - case 3: - challenges03() - case 4: - challenges04() - case 5: - challenges05() - case 6: - challenges06() - pass - case 7: - pass - case 8: - pass - case 9: - pass - case 10: - pass - case 11: - pass - case 'v': - return - case 's': - exit(0) - case _: - continue def challenges01(): select_ok = False diff --git a/basic/basic01.py b/basic/basic01.py index 5ec36f3..8819fec 100644 --- a/basic/basic01.py +++ b/basic/basic01.py @@ -1,7 +1,7 @@ class basics_001: def hola(self): - "Ask for the user's first name and display the output message" + "Ask for the user's first name and display the output message." nombre = input("Ingresa tu primer nombre: ") print(f"Hola {nombre}") diff --git a/common/common.py b/common/common.py index 600a021..de5ae25 100644 --- a/common/common.py +++ b/common/common.py @@ -13,19 +13,39 @@ def excp_handler(function): sleep(3) return wrapper -def opcs_default(): - print(""" v) Volver - s) Salir""") +def opcs_default(spaces): + sep = ' ' * spaces + print(f""" v){sep}Volver + s){sep}Salir""") def enter_continue(): input("\n\tPresiona Enter para continuar\n") +def enter_run(): + input("\n\tPresiona Enter para correr el programa\n") + @excp_handler def run_func(func): print(tab, func.__doc__, '\n') func() enter_continue() +def print_run_func(func): + print(tab, func.__doc__, '\n') + cont = 0 + retry = True + enter_continue() + while retry: + try: + func() + retry = False + except Exception: + cont += 1 + if cont > 3: + print("Ocurrio un error al intentar correr el programa") + print("¿Está instalado 'tk' en el sistema?") + break + def user_input(i): try: selection = input("\n Ingresa una opción: ") @@ -50,5 +70,5 @@ def print_challenges(exercises): print(f"{i+1}) ".rjust(8), end='') print(vars(exercises).get(funcs[i]).__doc__) i+=1 - opcs_default() + opcs_default(2) return i, ex diff --git a/imgs/pattern_067.png b/imgs/pattern_067.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5ee0f5802150ae829e98986f019f1dcb533022 GIT binary patch literal 13186 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⪼0u9(eNjWXwGf)w$FlSn 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