藍橋杯python 基礎練習 迴文取數

感覺題目描述不是很具體,看樣例輸入可知先左邊切割數字,在下面,右邊,上面,如此循環,像逆時針畫圈般。

在做這個題目時,主要解決幾個問題: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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章