Python基礎知識:以實例教你學隨機數產生和字符/ASCII碼轉換操作

2021-01-15 編碼那些事

實例說明

使用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種實現方法,大家如果有更好的實現方法,歡迎大家留言討論。

歡迎加關注,共同交流。

相關焦點

  • freescale單片機單精度浮點與16進位與ascii之間的轉換
    //---將單精度浮點轉換成unsigned char數組,然後將unsigned char數組轉換成ascii碼字符串float BallData[8] = {-8.925133};
  • 乾貨| 完美Python入門基礎知識點總結
    chr(x )將一個整數轉換為一個字符 unichr(x )將一個整數轉換為Unicode字符 ord(x )將一個字符轉換為它的整數值hex(x )將一個整數轉換為一個十六進位字符串 oct(x )將一個整數轉換為一個八進位字符串python數學函數abs(x)返回數字的絕對值
  • python字符串、列表內的方法使用
    ascii碼,三種編碼格式Unicode、utf-8、gbkascii:字母,數字,特殊字符:1個字節,8位Unicode:16位 兩個字節 升級 32 位 四個字節utf-8:最少一個字節 8位表示。
  • 從零開始學 Python 之輸入與輸出
    a' (使用 ascii()), '!s' (使用 str()) 和 '!r' (使用 repr()) 可以用於在格式化某個值之前對其進行轉化:可選項 ':' 和格式標識符可以跟著欄位名。 這就允許對值進行更好的格式化。
  • 玩轉Python 中的隨機數
    開發中我們經常遇到需要隨機數的場景,比如為了用戶密碼更安全我們有時會加鹽,也就是將用戶原密碼連接上一串隨機字符然後加密保存,又比如我們可能需要隨機展示某張圖片等等。今天,我們就來理一理 Python 中的隨機數的玩法,當然,這裡只涉及標準庫。
  • 打基礎一定要吃透這12類 Python 內置函數
    內置函數就是python給你提供的, 拿來直接用的函數,比如print.,input等。截止到python版本3.6.2 python一共提供了68個內置函數,我將它們分成 12 類,方便你學習。1. 和數字相關1.
  • 初識python
    1,計算機基礎。2,python歷史。宏觀上:python2 與 python3 區別:python2 源碼不標準,混亂,重複代碼太多,python3 統一 標準,去除重複代碼。3,python的環境。編譯型:一次性將所有程序編譯成二進位文件。缺點:開發效率低,不能跨平臺。
  • Python中字符串編碼在二進位之間相互轉換的方法
    第八十節:字符串編碼轉換在學習「計算字符串的長度」(詳見第72節內容Python中如何計算字符串的長度),對編碼的概念、分類和作用,做過一個簡單的介紹,今天的內容,還是從「編碼」開始談。在Python中,常用的字符串類型有str和bytes兩種。str表示Unicode字符,就是包括ASCII碼、utf-8碼、GBK碼、GB2312碼之類的編碼;bytes表示的則是二進位數據,其中包括了編碼的文本。
  • Numpy基礎,一位Python大神的筆記,看了後我連Matlab都學會了!
    如果你有Matlab基礎,那麼你能很快看懂本文!(私信小編007即可獲取Python視頻教程以及各類PDF!)一個慄子fromstringfromstring()方法可以將字符串轉化成ndarray對象,需要將字符串數位化時這個方法比較有用,可以獲得字符串的ascii碼序列。
  • 利用RANDBETWEEN、CHAR、IF函數,隨機產生數字與字母組合字符串
    之前的函數講解中,講到過RAND函數,這個函數可以產生從0到1的隨機數在我之前的文章《RAND()函數和TIME()函數,隨機事件的偶然發生及實現的可能過程》中也詳細的講解了這個函數的使用方法。有的好學的讀者提出問題:如何在EXCEL中隨機產生字母和數字組合的序列呢?今天我們就解答這個問題。在解答這個問題之前還是先複習一下RAND函數。
  • ASCII碼和16進位轉換表
    ASCII碼和16進位轉換表ASCII16進位
  • Python入門小迷宮,走完這個迷宮,就能掌握python編程基礎
    這是一個很神奇的迷宮,走完這個迷宮就能掌握python基礎。其實,這是一個用python做的迷宮小遊戲,非常簡單,但對於python初學者來說,還是有一定的挑戰性,但TONOW有源碼和教程,只要跟著python迷宮小遊戲的教程和相應的源碼,不僅很容易就能自己開發出這個遊戲,還能在這個過程中,掌握python編程的基礎哦!
  • Python2 已終結,入手Python 3,你需要這30個技巧
    這篇教程有 30 個你會喜歡的方法。勤勞的程式設計師們,這裡有 30 條使用 Python 時實用的建議和小技巧。你可以把讀這篇文章當做工作間隙的小憩,而且我保證你學到的東西會跟工作時一樣多。1.把字符串變成標題形式這只是 Python 中的寶藏之一:11. 把字符串分割成 list你可以把一個字符串分割成一個 list 的字符串。下面的例子中,我們是按照空格分割字符串的:12.
  • 223個Python小例子(1-60)
    互轉十進位整數對應的ASCII字符In [1]: chr(65)Out[1]: 'A'查看某個ASCII字符對應的十進位數In [1]: ord('A')Out[1]: 65,將x 轉換為一個普通整數。
  • 【Python基礎】13個知識點,系統整理Python時間處理模塊Datetime
    針對 Datetime 模塊, 《Python時間使用指南》從構建時間對象實例、時間轉換、時間對象的運算三個方面進行了梳理,共涉及 13 個知識點,整理的大綱如下:datetime構建時間對象實例import datetime# from datetime import
  • Python正則表達式:特殊符號和字符
    正表達式為高級的文本模式匹配,抽取,與/或文本形式的搜索和替換功能提供了基礎。簡而言之,正則表達式(簡稱regex)是由一些字符和特殊符號組成的字符串,它描述了模式的重複或者表達多個字符。python通過標準庫中的re模塊來支持正則表達式。
  • 介紹「十六進位數字符串至數值轉換」函數
    有幾點需要注意:本文引用地址:http://www.eepw.com.cn/article/201701/337016.htm1:雖然該函數的輸入端子「string」的值可以是十六進位數、字符串(ASCII)或其他進位數,但是「string」的值流入該函數中時,先轉換成字符串(ASCII)。
  • Python 三十大實踐、建議和技巧
    希望這些訣竅能在實際工作中幫助大家,並且學到一些有用的知識。1、使用 python 3由於官方從2020年1月1日起就停止了對python2.7的更新支持,因此本教程的大部分例子都只能在python 3環境下運行。如果你仍然在使用2.7版本,請先升級到python 3。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • Python基礎教程(一) - 快速入門
    從今天開始學習python,會將學習到的相關知識整理到這裡。今後的所有內容都基於Ubuntu系統中進行的,和其他語言一樣,讓我們先來"Hello World!"吧。Hello world!#!注釋和大部分腳本及Unix-shell語言一樣,python也使用 # 符號標示注釋,從#開始直到一行結束的內容都是注釋操作符和其他大多數語言一樣,Python中的標準算數操作符以你熟悉的方式工作