感覺題目描述不是很具體,看樣例輸入可知先左邊切割數字,在下面,右邊,上面,如此循環,像逆時針畫圈般。
在做這個題目時,主要解決幾個問題:1. python 輸入多行數據,空格隔開 2.判斷二維數組是否爲空,這個有點tricky,大家可以寫小代碼測試下。這個問題涉及到要怎麼更好的刪除數據。注意考慮數組只有一列的時候的刪除情況。 3. 題目要求輸出一串數字,別直接輸出列表了:)
下面是寫的測試小代碼:
str = [[7], [9], [2]]
for i in range(len(str)):
del str[i][0]
print(str)
if str is None:
print('str is None')
else:
print('str is not None')
str = [[7], [9], [2]]
for i in range(len(str)):
del str[i]
print(str)
if str is None:
print('str is None')
else:
print('str is not None')
str = [[7], [9], [2]]
for i in range(len(str)):
del str[0]
print(str)
if str is None:
print('str is None')
else:
print('str is not None')
下面上代碼,本人水平有限,寫的不好的地方,還請大家指正,一起學習~
# 迴文取數
# m rows n columns
m, n = map(int, input().split())
huiwen = [[None]*n for i in range(m)]
str = []
for i in range(m):
huiwen[i] = list(map(int, input().split()))
while True:
# left
if huiwen:
if len(huiwen[0]) == 1:
for i in range(len(huiwen)):
str.append(huiwen[0][0])
del huiwen[0]
else:
for i in range(len(huiwen)):
str.append(huiwen[i][0])
del huiwen[i][0]
# bottom
if huiwen:
str += huiwen[-1]
huiwen.pop()
# right
if huiwen:
s = len(huiwen)
if len(huiwen[0]) == 1:
for i in range(s):
str.append(huiwen[s-i-1][0])
del huiwen[s-i-1]
else:
for i in range(s):
str.append(huiwen[s-i-1][-1])
del huiwen[s-i-1][-1]
# up
if huiwen:
huiwen[0].reverse()
str += huiwen[0]
huiwen.pop(0)
if not huiwen:
for i in range(m*n):
print(str[i], end=' ')
exit()