[導讀]:超平老師的Scratch藍橋杯真題解讀系列在推出之后,受到了廣大老師和家長的好評,非常感謝各位的認可和厚愛。作為回饋,超平老師計劃推出《Python藍橋杯真題解析100講》,這是解讀系列的第70講。
奇偶數遞增遞減,本題是2021年10月24日舉辦的第13屆藍橋杯青少組Python編程選拔賽真題編程部分第4題。題目要求編程對給定的正整數N,從1到N之間按偶數遞增奇數遞減的順序排列輸出。
先來看看題目的要求吧。
一.題目說明
編程實現:
給定一個正整數N,將1到N之間(包含1和N)的正整數按偶數遞增、奇數遞減的順序排列輸出。
例如:
給定的正整數為5,1到5之間偶數有2、4,按偶數遞增順序排列為[2,4],1到5之間奇數為1、3、5,按奇數遞減順序排列為[5,3,1],故輸出的結果為:2,4,5,3,1。
輸入描述:
輸入一個正整數N
輸出描述:
將1到N之間(包含1和N)的所有正整數按偶數遞增、奇數遞減的順序排列輸出,正整數之間以一個英文逗號隔開(先輸出偶數,再輸出奇數)
樣例輸入:
5
樣例輸出:
2,4,5,3,1
二.思路分析
這是一道簡單的題目,考查的知識點包括循環、列表和輸入輸出等。
如果你仔細閱讀題目的話,會發現它已經給我們提供了一個思路,將1~N之間的正整數分成偶數和奇數兩個部分。
不妨使用兩個列表來保存偶數和奇數,當N = 5時,拆分如下:
偶數:[2, 4]
奇數:[1, 3, 5]
然后,將奇數列表逆序,偶數列表保持不變,如下:???????
偶數:[2, 4]
奇數:[5, 3, 1]
接下來,將兩個列表重新組合起,如下:
[2, 4, 5, 3, 1]
這不就是我們要的結果嗎,按照題目要求,用逗號分隔輸出即可。
思路有了,接下來,我們就進入具體的編程實現環節。
三.編程實現
根據上面的思路分析,我們編寫程序如下:
代碼比較簡單,說明4點:
1). ?在獲取偶數和奇數列表的時候,使用了列表推導式的編程技巧;
2). 使用join()函數時,需要將數字轉成字符串,所以在構造列表時,使用了str()函數將數字轉成了字符;
3). 獲取奇數列表時是正序的,然后運用切片運算,將odd列表逆序再連接;
4). Python編程中,使用+運算可以將兩個列表合并成一個列表。
至此,整個程序就全部完成了,你可以輸入不同的數字來測試效果啦。
四.總結與思考
本題代碼在5行左右,涉及到的知識點包括:
-
循環語句;
-
列表推導式;
-
切片運算;
-
字符串運算;
本題難度一般,代碼較少,重點考察列表的使用,包括列表推導式、列表切片、列表合并和列表轉字符串等。
在Python編程中,列表是一種非常重要的數據結構,其應用幾乎無處不在,一定要熟練掌握和列表相關的各種處理和運算。
超平老師給你留一道思考題,除了上面的方法外,你還有什么方法可以實現?
你還有什么好的想法和創意嗎,也非常歡迎和超平老師分享探討。
如果你覺得文章對你有幫助,別忘了點贊和轉發,予人玫瑰,手有余香😄
需要源碼的,可以移步至“超平的編程課”gzh。