在这段代码中,我分别打印了这两个n值。但是我希望在每次循环后将这些值打印在一个数组中。我怎么能这样做?
n=1000000
for x in range(1,3000001):
if n%2==0:
x=n/2
else:
x=3*n+ 1
n=x
print(n)
if n==1:
break
谢谢。
答案 0 :(得分:4)
在end=' '
内使用print()
:
print(n, end=' ')
<强>演示:强>
for i, x in enumerate(range(10), 1):
print (x, end=' ')
if x==5:
break
...
0 1 2 3 4 5
>>> print(i) #print the count
6
答案 1 :(得分:4)
您可以将值存储在列表中(例如下面的result
):
n = 1000000
result = []
for x in range(1, 3000001):
if n % 2 == 0:
x = n / 2
else:
x = 3 * n + 1
n = x
result.append(n)
if n == 1:
break
print(result)
# [500000, 250000, 125000,... 8, 4, 2, 1]
print(len(result))
# 152
将项目存储在列表中,您可以在以后的代码中进一步处理这些项目。您可以打印它们,计算它们,对它们进行更多计算等。
然而,它确实需要内存来存储它们,所以如果你不需要同时将它们全部保留在内存中,Ashwini Chaudhary的解决方案会更好。
这是一种类似于Ashwini的方法,除了它将打印与计算分开。这总是一件好事,因为通常人们希望执行计算而不是同时显示结果。
n = 1000001
def myseq(n):
for x in range(1, 3000001):
if n % 2 == 0:
x = n / 2
else:
x = 3 * n + 1
n = x
yield n
if n == 1:
return
for n, item in enumerate(myseq(n), 1):
print(n, end=' ')
# 500000 250000 125000... 8 4 2 1
print('\n{}'.format(n))