打印正方形的数字表


n: 8
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 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63

如何在python中打印这样的数字表,其中n可以是任何数字?我使用了一种非常愚蠢的方式来打印它,但结果不是预期的:

n = int(input('n: '))
if n == 4:
print(' 0 1 2 3n4 5 6 7n8 9 10 11n12 13 14 15')
if n == 5:
print(' 0 1 2 3 4n5 6 7 8 9n10 11 12 13 14n15 16 17 18 19n20 21 22 23 24')
if n == 6:
print(' 0 1 2 3 4 5n6 7 8 9 10 11n12 13 14 15 16 17n18 19 20 21 22 23n24 25 26 27 28 29n30 31 32 33 34 35')
if n == 7:
print(' 0 1 2 3 4 5 6n7 8 9 10 11 12 13n14 15 16 17 18 19 20n21 22 23 24 25 26 27n28 29 30 31 32 33 34n35 36 37 38 39 40 41n42 43 44 45 46 47 48')
if n == 8:
print(' 0 1 2 3 4 5 6 7n8 9 10 11 12 13 14 15n16 17 18 19 20 21 22 23n24 25 26 27 28 29 30 31n32 33 34 35 36 37 38 39n40 41 42 43 44 45 46 47n48 49 50 51 52 53 54 55n56 57 58 59 60 61 62 63')
if n == 9:
print(' 0 1 2 3 4 5 6 7 8n9 10 11 12 13 14 15 16 17n18 19 20 21 22 23 24 25 26n27 28 29 30 31 32 33 34 35n36 37 38 39 40 41 42 43 44n45 46 47 48 49 50 51 52 53n54 55 56 57 58 59 60 61 62n63 64 65 66 67 68 69 70 71n72 73 74 75 76 77 78 79 80')
if n == 10:
print(' 0 1 2 3 4 5 6 7 8 9n10 11 12 13 14 15 16 17 18 19n20 21 22 23 24 25 26 27 28 29n30 31 32 33 34 35 36 37 38 39n40 41 42 43 44 45 46 47 48 49n50 51 52 53 54 55 56 57 58 59n60 61 62 63 64 65 66 67 68 69n70 71 72 73 74 75 76 77 78 79n80 81 82 83 84 85 86 87 88 89n90 91 92 93 94 95 96 97 98 99')

结果是:

n: 8
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 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63

我不会直接向您展示代码,这里有一些提示。你知道python中的%运算符吗?以及如何使用它来打断线条。至于格式,zfill函数将为您提供帮助。您可能需要学习forwhile语句来解决您的问题

您可以通过范围循环和列表理解来实现这一点。

为了使输出看起来正确,您需要计算出正方形中最大值的宽度。然后,您需要格式化每个值以适应该宽度(右对齐(。类似这样的东西:

def number_square(n):
w = len(str(n*n-1))
for r in range(n):
print(*[f'{c:>{w}}' for c in range(r*n, r*n+n)])
number_square(8)

输出:

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 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63

最新更新