学习《Python编程快速上手》P56
问题链接:https://automatetheboringstuff.com/chapter3/
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.”) Remember to convert the return value from input() to an integer with the int() function; otherwise, it will be a string value.
代码实现:
# Problem: The Collatz Sequence
# The url of the problem: https://automatetheboringstuff.com/chapter3/
# Define the function
def Collatz(number):
if number % 2 == 0:
return number//2
elif number % 2 == 1:
return 3*number+1
# Enter an integer
try:
Num = int(input('Enter a number:\n'))
# Call the Collatz.
while True:
Result = Collatz(Num)
print(Result)
if Result == 1:
break
Num = Result
except ValueError:
print('You need enter an integer!')
运行示例:
Enter a number:
3
10
5
16
8
4
2
1