Faire un collatz programme d'automatiser les trucs ennuyeux

Je suis en train d'écrire un collatz programme en utilisant les lignes directrices d'un projet se trouvent à la fin du chapitre 3 de l'Automatiser les Trucs Ennuyeux avec Python. Je suis à l'aide de python 3.4.0. Voici les grandes lignes du projet:

Écrire une fonction nommée collatz() qui a un paramètre nommé numéro. Si le nombre est pair, alors collatz() imprimer numéro d' //2 et renvoie cette valeur. Si le nombre est impair, alors collatz() doit imprimer et return 3 * nombre + 1. Ensuite, écrire un programme qui permet à l'utilisateur de taper un entier et qui continue d'appeler collatz() sur ce numéro jusqu'à ce que la fonction renvoie la valeur 1.

La sortie de ce programme pourrait ressembler à quelque chose comme ceci: Entrez le nombre: 3 10 5 16 8 4 2 1

Je suis en train de faire une fonction qui utilise si et elif instructions à l'intérieur d'une boucle while. Je veux le nombre d'exemplaires à imprimer, puis revenir au début de la boucle et de réduire lui-même à l'aide de la collatz séquence, chaque instance d'un nombre qui en résulte étant imprimé comme il va à travers la boucle. Avec mon code actuel, je suis seulement en mesure d'imprimer la première instance du nombre, et ce nombre ne va pas dans la boucle après que. Voici mon code:

#collatz

print("enter a number:")
try:
    number = (int(input()))
except ValueError:
          print("Please enter a valid INTEGER.")


def collatz(number):
    while number != 1:

        if number % 2==0:
            number = (number//2)
            #print(number)
            return (print(int(number)))

        elif nnumber % 2==1:
            number = (3*number+1) 
            #print(number)
            return (print(int(number)))

        continue


collatz(number)

OriginalL'auteur DeltaFlyer | 2015-11-03