制作 table 这样的数字的简单代码
Simple code to make a table of numbers like this
我需要一个简单程序的帮助来打印 table 这样的数字。它只适用于 n 为奇数而不适用于偶数的情况。 喜欢 n = 3, 5, 7, 27
我几乎完成了它,但无法弄清楚到底。首选使用 for 循环的解决方案。
例如,我的代码仅适用于 table(5) 但不适用于 table(9)。
def table(n: int):
for i in range(n // 2+1):
for j in range(n):
if j <= (n // 2):
print(n-i-j, end="")
else:
print(j-i+1, end="")
print()
for x in range(n // 2):
for y in range(n):
if y <= (n // 2):
print(n // 2 + x + 2 - y, end="")
else:
print(y // 2 + x + 2, end="")
print()
应该如何:
5 4 3 4 5
4 3 2 3 4
3 2 1 2 3
4 3 2 3 4
5 4 3 4 5
table(9)
my output(wrong):
9 8 7 6 5 6 7 8 9
8 7 6 5 4 5 6 7 8
7 6 5 4 3 4 5 6 7
6 5 4 3 2 3 4 5 6
5 4 3 2 1 2 3 4 5
6 5 4 3 2 4 5 5 6
7 6 5 4 3 5 6 6 7
8 7 6 5 4 6 7 7 8
9 8 7 6 5 7 8 8 9
what it should be:
9 8 7 6 5 6 7 8 9
8 7 6 5 4 5 6 7 8
7 6 5 4 3 4 5 6 7
6 5 4 3 2 3 4 5 6
5 4 3 2 1 2 3 4 5
6 5 4 3 2 3 4 5 6
7 6 5 4 3 4 5 6 7
8 7 6 5 4 5 6 7 8
9 8 7 6 5 6 7 8 9
def table(n: int):
for i in range(n // 2+1):
for j in range(n):
if j <= (n // 2):
print(n-i-j, end="")
else:
print(j-i+1, end="")
print()
for x in range(n // 2):
for y in range(n):
if y <= (n // 2):
print(n // 2 + x + 2 - y, end="")
else:
# should be this instead of y//2
print(x + 2 - n//2 + y, end="")
print()
但实际上你可以一行完成:
n = 9
[[1 + abs(i-n//2) + abs(j-n//2) for j in range(n)] for i in range(n)]
[[9, 8, 7, 6, 5, 6, 7, 8, 9],
[8, 7, 6, 5, 4, 5, 6, 7, 8],
[7, 6, 5, 4, 3, 4, 5, 6, 7],
[6, 5, 4, 3, 2, 3, 4, 5, 6],
[5, 4, 3, 2, 1, 2, 3, 4, 5],
[6, 5, 4, 3, 2, 3, 4, 5, 6],
[7, 6, 5, 4, 3, 4, 5, 6, 7],
[8, 7, 6, 5, 4, 5, 6, 7, 8],
[9, 8, 7, 6, 5, 6, 7, 8, 9]]
我需要一个简单程序的帮助来打印 table 这样的数字。它只适用于 n 为奇数而不适用于偶数的情况。 喜欢 n = 3, 5, 7, 27 我几乎完成了它,但无法弄清楚到底。首选使用 for 循环的解决方案。 例如,我的代码仅适用于 table(5) 但不适用于 table(9)。
def table(n: int):
for i in range(n // 2+1):
for j in range(n):
if j <= (n // 2):
print(n-i-j, end="")
else:
print(j-i+1, end="")
print()
for x in range(n // 2):
for y in range(n):
if y <= (n // 2):
print(n // 2 + x + 2 - y, end="")
else:
print(y // 2 + x + 2, end="")
print()
应该如何:
5 4 3 4 5
4 3 2 3 4
3 2 1 2 3
4 3 2 3 4
5 4 3 4 5
table(9)
my output(wrong):
9 8 7 6 5 6 7 8 9
8 7 6 5 4 5 6 7 8
7 6 5 4 3 4 5 6 7
6 5 4 3 2 3 4 5 6
5 4 3 2 1 2 3 4 5
6 5 4 3 2 4 5 5 6
7 6 5 4 3 5 6 6 7
8 7 6 5 4 6 7 7 8
9 8 7 6 5 7 8 8 9
what it should be:
9 8 7 6 5 6 7 8 9
8 7 6 5 4 5 6 7 8
7 6 5 4 3 4 5 6 7
6 5 4 3 2 3 4 5 6
5 4 3 2 1 2 3 4 5
6 5 4 3 2 3 4 5 6
7 6 5 4 3 4 5 6 7
8 7 6 5 4 5 6 7 8
9 8 7 6 5 6 7 8 9
def table(n: int):
for i in range(n // 2+1):
for j in range(n):
if j <= (n // 2):
print(n-i-j, end="")
else:
print(j-i+1, end="")
print()
for x in range(n // 2):
for y in range(n):
if y <= (n // 2):
print(n // 2 + x + 2 - y, end="")
else:
# should be this instead of y//2
print(x + 2 - n//2 + y, end="")
print()
但实际上你可以一行完成:
n = 9
[[1 + abs(i-n//2) + abs(j-n//2) for j in range(n)] for i in range(n)]
[[9, 8, 7, 6, 5, 6, 7, 8, 9],
[8, 7, 6, 5, 4, 5, 6, 7, 8],
[7, 6, 5, 4, 3, 4, 5, 6, 7],
[6, 5, 4, 3, 2, 3, 4, 5, 6],
[5, 4, 3, 2, 1, 2, 3, 4, 5],
[6, 5, 4, 3, 2, 3, 4, 5, 6],
[7, 6, 5, 4, 3, 4, 5, 6, 7],
[8, 7, 6, 5, 4, 5, 6, 7, 8],
[9, 8, 7, 6, 5, 6, 7, 8, 9]]