1

In this code I have printed these n values separately.But I want these values to be printed in a single array after each looping.How can I do that?

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

Thank you.

4

2 回答 2

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
于 2013-08-18T11:54:56.210 回答
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))
于 2013-08-18T11:59:59.163 回答