實例說明
使用Python語言,產生20個「a」-「z」之間的隨機字符序列。
基本實現方法1
使用python內置的random模塊產生隨機數,我們知道字符「a」和「z」對應的ASCII碼分別為97和122,所以對於題目要求產生「a」-「z」之間的隨機字符序列,只需使用random模塊產生97-122之間的隨機數,然後將其轉換為對應的字符即可。其中,字符轉數字的函數為ord函數,數字轉字符的函數為chr函數。根據這個思路,實現代碼如下圖所示:
上面代碼中,先創建一個空列表a,在for循環中,每次產生一個ord(『a』)-ord(『z』)之間(即97-122之間)的隨機數,再將其使用chr轉換為字符,添加到列表a中,循環20次後,即可產生20個「a」-「z」之間的隨機字符序列。
改進方法2
將方法1中列表a的產生,使用map函數實現,列表中每個隨機字符的產生在lambda函數內部實現,代碼如下圖所示:
改進方法3
思路是先使用列表推導式產生一個「a」-「z」之間的順序字符序列,然後在map的lambda函數裡面,每次使用random模塊的choice函數從順序字符序列中隨機抽取一個字符,得到最後的隨機字符序列a,代碼如下圖所示:
改進方法4
思路同方法3完全一樣,唯一的區別是,在產生一個「a」-「z」之間的順序字符序列時,使用的了Python內置string庫的ascii_lowercase得到這個順序序列。代碼如下圖所示:
改進方法5
這種方法使用了numpy庫,用該庫提供的random模塊的randint函數直接產生20個97-122之間的隨機數數組,然後再用列表推導式將每個隨機數使用chr函數將其轉換為字符,從而得到整個「a」-「z」之間的隨機字符序列。代碼如下圖所示:
完整的測試代碼
完整的測試代碼如下圖所示:
運行結果如下圖所示:
總結
這個題目雖小,但涉及到的Python編程的基礎知識點挺多,包括:隨機數的產生、字符/ASCII碼相互轉換、列表推導式、map/lambda/for等函數的使用。
上面給出了5種實現方法,大家如果有更好的實現方法,歡迎大家留言討論。
歡迎加關注,共同交流。