43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
|
"""
|
|||
|
# 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()
|