Note: I was trying to figure out why my while statement did not evaluate to False when the integer was, so I don't believe this is a duplicate
Doing an automating the boring stuff exercise in python where the program receives an input and reduces it to 1 using the following algorithm.
#even / 2
#odd * 3 + 1
def collatz():
    print("Enter number:")
    number = input()
    try:
        data = int(number) # Input Validation
        while int(data) != 1:
            if data % 2 == 0: #Number is even
                data = int(data/2)
                print(data)
            if data % 2 == 1: # Number is odd
                data = int(3*data+1)
                print(data)
    except:
        print("Please input a valid value")
        collatz()
collatz()
Instead of the while loop breaking, when the number is reduced to 1. The loop continues and it multiplies 1 by 3 and adds 1(Just as normal odd number). Btw many int conversions were done as I thought it may have returned a floating point.
So please tell me where are the unncessary int conversions and how to break it using a while statement. Any cleanup to code is appreciated