如何在 Python 3 中生成行和列
How to generate rows and columns in Python 3
我需要知道如何生成 右对齐 的数字序列 行(共 6 行) 和 列(共 7 个) 具有设置的字段宽度(共 2 个)和 space(共 1 个)。
首先我必须要求用户输入数字"n"
(要求-6 < n < 2
)然后在第一列打印"n to n+6"
,在第一列打印"n+7 to n+13"
以下专栏等。
我从以下代码中得到了 input/output,但不知道如何生成行和列(或指定字段宽度):
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 循环来完成它,但无法弄清楚。非常感谢任何帮助 - 提前致谢!
您可以将 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)
版本没有 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
最大的数字只能有两位,所以你只需要右对齐2,使用第一个循环的步长6,从第一个开始从每个x开始内循环,我们还需要捕捉当n等于 -5,38
步长为 6 总是给我们 7 列和 6 行,除非 n 是 -5 然后我们需要使用 37 所以当 n 减去 (n < -4)
时会得到 38 -> 37是 -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
还有其他更简单的方法,但我想这是某种学习练习。
如果真的是6行7列就更简单了:
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
我需要知道如何生成 右对齐 的数字序列 行(共 6 行) 和 列(共 7 个) 具有设置的字段宽度(共 2 个)和 space(共 1 个)。
首先我必须要求用户输入数字"n"
(要求-6 < n < 2
)然后在第一列打印"n to n+6"
,在第一列打印"n+7 to n+13"
以下专栏等。
我从以下代码中得到了 input/output,但不知道如何生成行和列(或指定字段宽度):
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 循环来完成它,但无法弄清楚。非常感谢任何帮助 - 提前致谢!
您可以将 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)
版本没有 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
最大的数字只能有两位,所以你只需要右对齐2,使用第一个循环的步长6,从第一个开始从每个x开始内循环,我们还需要捕捉当n等于 -5,38
步长为 6 总是给我们 7 列和 6 行,除非 n 是 -5 然后我们需要使用 37 所以当 n 减去 (n < -4)
时会得到 38 -> 37是 -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
还有其他更简单的方法,但我想这是某种学习练习。
如果真的是6行7列就更简单了:
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