From 7bbe73956166b955d9f20efe1a2cf4292f143c7b Mon Sep 17 00:00:00 2001 From: perro Date: Thu, 16 Feb 2023 14:51:26 -0800 Subject: [PATCH] Ejercicio 3 --- exercises/ex03/ex03.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 exercises/ex03/ex03.py diff --git a/exercises/ex03/ex03.py b/exercises/ex03/ex03.py new file mode 100644 index 0000000..b6a476a --- /dev/null +++ b/exercises/ex03/ex03.py @@ -0,0 +1,42 @@ +""" +# collatz() + +Write a function named collatz() that has one parameter named number. If +number is even, then collatz() should print number / 2 and return this value. +If number is odd, then collatz() should print and return 3 * number + 1. + +Then write a program that lets the user type in an integer and that +keeps calling collatz() on that number until the function returns the value 1. +(Amazingly enough, this sequence actually works for any integer—sooner or +later, using this sequence, you’ll arrive at 1! Even mathematicians aren’t sure +why. Your program is exploring what’s called the Collatz sequence, sometimes +called “the simplest impossible math problem.”) +""" + +import time + + +def collatz(number): + if number % 2 == 0: + res = int(number / 2) + else: + res = 3 * number + 1 + print(res) + return res + + +def cli(): + print("Ingresa un número entero:", end=" ") + number = input() + try: + number = int(number) + wait = 0.1 / len(str(number)) + while number != 1: + number = collatz(number) + time.sleep(wait) + except ValueError: + print(f"¡'{number}' no es un número entero!") + cli() + + +cli()