Quantcast
Channel: Python - The Collatz Sequence - Code Review Stack Exchange
Viewing all articles
Browse latest Browse all 4

Python - The Collatz Sequence

$
0
0

Can I get a review of my code for the the Collatz Sequence from Chapter three of Automate the Boring Stuff with Python?

The Collatz Sequence

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.

Hint: An integer number is even if number % 2 == 0, and it’s odd if number % 2 == 1.

The output of this program could look something like this:

Enter number:3105168421

Input Validation

Add try and except statements to the previous project to detect whether the user types in a noninteger string. Normally, the int() function will raise a ValueError error if it is passed a noninteger string, as in int('puppy'). In the except clause, print a message to the user saying they must enter an integer.

I am mainly wondering if there is a cleaner way to write my solution.

def collatz(num):    while num > 1:        if num % 2 == 0:            print(num//2)            num = num //2        elif num % 2 ==1:            print(3*num+1)            num = 3*num+1        else:            print(num)def getNum():    global num    num = (input("> "))    try:        num = int(num)    except ValueError:        print('plese enter a number')        getNum()getNum()collatz(num)

Viewing all articles
Browse latest Browse all 4

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>