輸入格式
輸入第一行包括由空格分開的整數 M,N,T(0 < N,M < 200)M,N,T(0<N,M<200),T 的值為 0 或11。其中 M 和 N 分別表示待處理矩陣的行數與列數,T 為 0 時表示左右翻轉,為 1 時表示上下翻轉。
之后的 M 行,每行包括由空格分隔的 N 個整數,依次為輸入矩陣的每一行的數據。
輸出格式
輸出包括 M 行 N 列,每個數字之間用一個空格分隔,每一行行末均有一個空格,表示的是按照要求翻轉后的矩陣。
樣例輸入
4 4 1 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
樣例輸出
3 4 5 6 9 0 1 2 5 6 7 8 1 2 3 4
解題思路:這道題上下翻轉和左右翻轉分為兩種不太相同的思路
1.首先將輸入的數組存入一個二維列表中,python中不存在二維列表,即用列表中包含列表來表示二維列表
mapss = [] for i in range(int(a)): lists = input().split() mapss.append(lists)
2.對這個列表進行上下翻轉,按照以上存入數組方法,每一行就是一個列表,直接將列表進行交換

for j in range(m // 2): maps[j], maps[a - 1 - j] = maps[a - 1 - j], maps[j]
3.對這個列表左右翻轉,由於一開始存入的數組是上圖所示,所以無法直接進行數組交換,只能將每行中的數字逐個交換
for j in maps: for k in range(n // 2): j[k], j[n-1-k] = j[n-1-k], j[k]
4.將最終的兩種不同方式封裝為函數
def changes(m, n, q, maps): if q == 1: for j in range(m // 2): maps[j], maps[a - 1 - j] = maps[a - 1 - j], maps[j] elif q == 0: for j in maps: for k in range(n // 2): j[k], j[n-1-k] = j[n-1-k], j[k]
貼上最終的ac代碼:

1 def changes(m, n, q, maps): 2 if q == 1: 3 for j in range(m // 2): 4 5 maps[j], maps[a - 1 - j] = maps[a - 1 - j], maps[j] 6 elif q == 0: 7 for j in maps: 8 for k in range(n // 2): 9 j[k], j[n-1-k] = j[n-1-k], j[k] 10 11 12 a, b, c = input().split() 13 a = int(a) 14 mapss = [] 15 for i in range(int(a)): 16 lists = input().split() 17 mapss.append(lists) 18 19 changes(a, int(b), int(c), mapss) 20 for i in mapss: 21 for j in i: 22 print(j+" ", end="") 23 print("")
本題的思路中只將行數,列數以及判斷翻轉方式3個變量化為整數,其余矩陣中的整數均以字符串形式表示,並未將其化為整數,
該題是對矩陣整體的變化,並未對矩陣具體內容進行修改,所以無須化為整數。