如何在Python 3中生成行和列

时间:2016-03-27 11:39:45

标签: python python-3.x sequence rows

我需要知道如何在行(6个)列(7个)中生成右对齐的数字序列具有设置的字段宽度(2)和空间(1)。

首先,我必须要求用户输入一个输入数字"n"(需要-6 < n < 2),然后在第一列中打印"n to n+6""n+7 to n+13"位于以下列中等等。

我从以下代码获得了输入/输出,但不知道如何生成行和列(或指定字段宽度):

n = int(input("Enter the start number: "))

if n>-6 and n<2:
    for x in range(n, n+41):
        print(n, end=" ")
        n = n+1

我一直试图在for循环中使用for循环,但无法弄明白。任何帮助将非常感谢 - 提前谢谢你!

3 个答案:

答案 0 :(得分:1)

您可以将numpy用于reshape。这提供了简洁且更易读的代码:

import numpy as np

n = int(input("Enter the start number: "))

if n>-6 and n<2:
    print (n + np.arange(42)).reshape(6,7)

答案 1 :(得分:1)

最高的数字只能有两位数,所以你只需要对齐2,使用第一个循环的6步和从第一个循环开始每个x的内循环,我们还需要在n等于时捕获到-5,步长为6的38总是给我们7列和6行,除非n是-5然后我们需要使用37因此减去(n < -4)会使38 - &gt; 37当n为-5时,或者什么也不带走:

n = int(input("Enter the start number: "))

if -6 < n < 2:
    for x in range(n, 38 - (n < -4), 6):
        for j in range(x,  x + 6):
            print("{:>2}".format(j), end=" ")
        print()

将它放在函数pr_right中并从-5运行到1:

-5 -4 -3 -2 -1  0 
 1  2  3  4  5  6 
 7  8  9 10 11 12 
13 14 15 16 17 18 
19 20 21 22 23 24 
25 26 27 28 29 30 
31 32 33 34 35 36 

-4 -3 -2 -1  0  1 
 2  3  4  5  6  7 
 8  9 10 11 12 13 
14 15 16 17 18 19 
20 21 22 23 24 25 
26 27 28 29 30 31 
32 33 34 35 36 37 

-3 -2 -1  0  1  2 
 3  4  5  6  7  8 
 9 10 11 12 13 14 
15 16 17 18 19 20 
21 22 23 24 25 26 
27 28 29 30 31 32 
33 34 35 36 37 38 

-2 -1  0  1  2  3 
 4  5  6  7  8  9 
10 11 12 13 14 15 
16 17 18 19 20 21 
22 23 24 25 26 27 
28 29 30 31 32 33 
34 35 36 37 38 39 

-1  0  1  2  3  4 
 5  6  7  8  9 10 
11 12 13 14 15 16 
17 18 19 20 21 22 
23 24 25 26 27 28 
29 30 31 32 33 34 
35 36 37 38 39 40 

 0  1  2  3  4  5 
 6  7  8  9 10 11 
12 13 14 15 16 17 
18 19 20 21 22 23 
24 25 26 27 28 29 
30 31 32 33 34 35 
36 37 38 39 40 41 

 1  2  3  4  5  6 
 7  8  9 10 11 12 
13 14 15 16 17 18 
19 20 21 22 23 24 
25 26 27 28 29 30 
31 32 33 34 35 36 
37 38 39 40 41 42 

还有其他更简单的方法,但我想这是一种学习练习。

如果它实际上是六行和七列更容易:

for x in range(n, 37, 7):
    for j in range(x,  x + 7):
        print("{:>2}".format(j), end=" ")
    print()

如果我们通过另一个pr_right函数输出它:

In [10]: for n in range(-5, 2):
             pr_right(n)
             print()
   ....:     
-5 -4 -3 -2 -1  0  1 
 2  3  4  5  6  7  8 
 9 10 11 12 13 14 15 
16 17 18 19 20 21 22 
23 24 25 26 27 28 29 
30 31 32 33 34 35 36 

-4 -3 -2 -1  0  1  2 
 3  4  5  6  7  8  9 
10 11 12 13 14 15 16 
17 18 19 20 21 22 23 
24 25 26 27 28 29 30 
31 32 33 34 35 36 37 

-3 -2 -1  0  1  2  3 
 4  5  6  7  8  9 10 
11 12 13 14 15 16 17 
18 19 20 21 22 23 24 
25 26 27 28 29 30 31 
32 33 34 35 36 37 38 

-2 -1  0  1  2  3  4 
 5  6  7  8  9 10 11 
12 13 14 15 16 17 18 
19 20 21 22 23 24 25 
26 27 28 29 30 31 32 
33 34 35 36 37 38 39 

-1  0  1  2  3  4  5 
 6  7  8  9 10 11 12 
13 14 15 16 17 18 19 
20 21 22 23 24 25 26 
27 28 29 30 31 32 33 
34 35 36 37 38 39 40 

 0  1  2  3  4  5  6 
 7  8  9 10 11 12 13 
14 15 16 17 18 19 20 
21 22 23 24 25 26 27 
28 29 30 31 32 33 34 
35 36 37 38 39 40 41 

 1  2  3  4  5  6  7 
 8  9 10 11 12 13 14 
15 16 17 18 19 20 21 
22 23 24 25 26 27 28 
29 30 31 32 33 34 35 
36 37 38 39 40 41 42 

答案 2 :(得分:0)

没有 numpy的版本

n = int(input("Enter the start number: "))

for x in range(n, n + 42, 7):
    for y in range(x, x + 7):
        print y,
    print