python 列印回環數字

2021-08-18 22:42:05 字數 1582 閱讀 3844

有這樣乙個題:

輸入n,假設n=4,輸出

10 11 12  1

9   16 13  2

8   15 14  3

7   6   5    4

1、根據行來分隔,將每一行作為乙個子列表放入列表l,而子列表的元素是每一行的數字。那每個數字都對應乙個座標值(x,y),我們只需要順時針依次填數即可

2、首先建立全為0的目標矩陣

l = [[0 for i in range(num)] for i in range(num)]
3、第乙個數的座標是(0,n-1)【l的第乙個元素中的最後乙個元素,也就是第一行的最後乙個數】,那下乙個數就應該在x座標上加1。那現在有兩個問題,如何控制轉彎以及座標遞增遞減的規律

4、首先說明遞增遞減的規律:

5、座標變化規律控制:每次按照上次的方向走,如果數字為0(第二步已經建立了全為0的矩陣)或者程式異常(超出索引值),則表示需要轉彎了

def next_cursor(c, cursor):     #計算下乙個座標位置

if c%4 == 0: #右

return (cursor[0], cursor[1]+1)

elif c%4 == 1: #下

return (cursor[0]+1, cursor[1])

elif c%4 == 2: #左

return (cursor[0], cursor[1]-1)

elif c%4 == 3: #上

return (cursor[0]-1, cursor[1])

def annular(num):

c = 1 #對4求餘,判斷前進方向,0--3分別表示 右下左上

cursor = (0, num-1) #起始數x、y座標

l = [[0 for i in range(num)] for i in range(num)] #構建目標矩陣

i = 1 #從1開始

while 1:

try:

if l[cursor[0]][cursor[1]] == 0: #如果當前座標為0,則賦值,否則轉彎

l[cursor[0]][cursor[1]] = i

cursor_now = cursor #備份合法位置

cursor = next_cursor(c, cursor)

i += 1

if i > num**2:

break

else: #若已存在值,則轉彎

c += 1

cursor = next_cursor(c, cursor_now)

except: #若超出範圍,也轉彎

c += 1

cursor = next_cursor(c, cursor_now)

return l

#格式化調列印結果

l = annular(10)

for line in l:

for i in line:

print('%3d' % i, end='')

print()

列印數字回環

題目要求 input a value n,then print out a n n matrix.example 1 input 2,output 1 24 3 example2 input 5,output 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 2...

written amount 列印數字)

include include include static char digits static char tens static char magnitudes static void do one group unsigned int amount,char buffer,char magni...

列印陀螺形數字

使用者輸入n,編寫程式通過二維陣列列印如下所示陀螺形數字 以n 6為例 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 13 5 24 25 26 27 12 6 7 8 9 10 11 列印陀螺形數字 通過控制二維陣...