天天看點

一道課後練習題背後的知識點

一道課後練習題背後的知識點

寫在前面

前文回顧:【LeetCode】貪心算法--買賣股票的最佳時機 II(122)

前兩天做了一個随機生成密碼的課後練習題,題目挺簡單,但是這個題目卻有兩個比較重要的知識點Random和String子產品,今天就跟大家聊一聊這兩個知識點。話不多說,我們開始吧。

具體介紹

題目描述:

随機密碼生成。編寫程式,在26個字母大小寫和9個數字組成的清單中随機生成10個八位密碼。

這個題并不難隻要建立一個包含26個字母大小寫和9個數字的清單然後用Random随機生成就可以了。下面是自己的代碼:

1#随機密碼生成
2import random
3import string
4a=0
5while a<11:
6    #從a-zA-Z0-9生成指定數量的随機字元
7    str = ''.join(random.sample(string.ascii_letters + string.digits,8))
8    print (str)
9    a+=1           

複制

代碼量可以說是非常小,那麼現在我給大家講解一下Random和String子產品,兩者的組合在現實生活中有很多應用,比如生成激活碼。

Random庫

随機數在計算機應用中十分常見,python内置的random庫主要用于産生各種分布的僞随機數列。random庫采用梅森旋轉算法生成僞随機數序列,可用于除随機性要求更高的加解密算法外的大多數工程應用,之前的Python人工造雪2.0(動态版)就是應用random随機數實作動态的雪花。

random庫中主要有以下常用的函數

1.随機整數:

1random.randint(1,50)           

複制

2.随機選取0到100間的偶數:

1random.randrange(0, 101, 2)           

複制

3.随機浮點數:

1random.random()
2random.uniform(1,10)           

複制

4.随機字元:

1random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()')           

複制

5.多個字元中生成指定數量的随機字元:

1random.sample('zyxwvutsrqponmlkjihgfedcba',5)           

複制

6.随機選取字元串:

1random.choice(['剪刀', '石頭', '布'])           

複制

7.打亂排序

1items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
2random.shuffle(items)           

複制

String子產品

任何語言都離不開字元,那就會涉及對字元的操作,尤其是腳本語言更是頻繁,不管是生産環境還是面試考驗都要面對字元串的操作。python的字元串操作通過2部分的方法函數基本上就可以解決所有的字元串操作需求:

1.python的字元串屬性函數

這主要介紹幾個常用的方法

str.capitalize() :把字元串的首字母大寫

str.center(width):将原字元串用空格填充成一個長度為width的字元串

str.count(s) :傳回字元串s在str中出現的次數

str.lower():全部字元小寫

str.upper():全部字元大寫

str.format():傳回字元串的一種排版格式

2.python的string子產品

Python3中String子產品ascii_letters和digits方法,其中ascii_letters是生成所有字母,從a-z和A-Z,digits是生成所有數字0-9。

string.punctuation 所有标點字元

string.whitespace 空白字元\t\n\x0b

string.printable 可列印的字元字元串 包含數字字母标點符号

寫在最後

今天這篇文章是由一道練習題延伸出來的知識點,簡單的談了談常用的方法,希望能給大家帶來一點幫助。