/ / Comment puis-je mettre ces chiffres dans une liste? - python, liste, collatz

Comment puis-je mettre ces numéros dans la liste? - python, liste, collatz

J'ai donc cette assignation de conjecture de Collatz. Fondamentalement, je dois écrire un programme auquel je donne un nombre et il calculera la conjecture de Collatz pour cela. Voici mon problème cependant: le nombre qui sortira sera écrit comme ceci:

12
6
3
10
5
16
8
4
2
1

Quand ils devraient être dans une liste comme celle-ci [12, 6, 3, 10, 5, 16, 8, 4, 2, 1].

Et voici mon code:

n = int(input("The number is: "))
while n != 1:
print(n)
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
print(1)

Réponses:

2 pour la réponse № 1

Vous devez stocker les numéros dans une liste

result = []
while n != 1:
result.append(n)
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
result.append(n)

print result

1 pour la réponse № 2

C'est aussi une option. Un idiot, mais quand même:

n = int(input("The number is: "))
print("[", end="")
while n != 1:
print(n, end=", ")
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
print("1]")

0 pour la réponse № 3

Une version récursive, juste pour le fun:

number = int(input("the number is: "))

def collatz(n):
if n == 1:
return [n]
elif n % 2 == 0:
return [n] + collatz(n/2)
else:
return [n] + collatz((3*n)+1)

print collatz(number)