我需要一個簡單程式的幫助來列印這樣的數字表。它只適用于 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
uj5u.com熱心網友回復:
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]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/384585.html
上一篇:如何將DataFrame中的每一行/單元格值轉換為Pandas中的字典串列?
下一篇:創建從分析的資料幀派生的兩個串列
