包含输出用户值的Collatz序列



如何将用户输入值包含在输出的第一个位置?

下面是我的代码:
seq = []
n = int(input("nEnter a number (greater than 1): "))
while (n > 1):
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
seq.append(n)
print()
print(*seq)

所以当我输入6时,它是这样打印的:

3 10 5 16 8 4 2 1

我输入的值(必须包含)丢失了。请帮助!

在当前代码中,您在每次迭代结束时将n添加到seq。要添加n的初始值,只需在进入while循环之前执行seq.append(n):

seq = []
n = int(input("nEnter a number (greater than 1): "))
seq.append(n)   # this is the addition you need
while (n > 1):
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
seq.append(n)
print()
print(*seq)

有几种方法可以做到这一点。我认为最合乎逻辑的方法是将seq.append(n)语句移动到while循环的第一行以捕获您的输入。问题将是我将被从列表的末尾删除。要解决这个问题,您可以更改while循环条件以捕获一个,并添加一个条件以跳出while循环:

seq = []
n = int(input("nEnter a number (greater than 1): "))
while (n > 0):
seq.append(n)
if n == 1:
break
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
print()
print(*seq)
#output:
Enter a number (greater than 1): 6
6 3 10 5 16 8 4 2 1

最新更新