python : Collatz Sequence
Your function is called generate but it doesn't return anything. Instead display would be a better name.
It would be better if you had two functions one to generate the values, one to display them.
Function names should be lower_snake_case to be idiomatic.
+ " " is not needed, as print makes the value go to the next line anyway.
str(number) also isn't needed as print will do this automatically for you.


Thanks @Toby Speight:


You can move the print to be after both the if and the else.


def generate_collatz_sequence(number):
    output = [number]
    while number != 1:
        if number % 2 == 0:
            number = number / 2
        elif number % 2 == 1:
            number = (3 * number) + 1
        output.append(number)

def display_collatz_sequence(values):
    for number in values:
        print(number)


If you want this to still display values in real time, then you can make generate_collatz_sequence a generator function.

def generate_collatz_sequence(number):
    yield number
    while number != 1:
        if number % 2 == 0:
            number = number / 2
        elif number % 2 == 1:
            number = (3 * number) + 1
        yield number