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 № 1Vous 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)