生成隨機密碼
- 一、研發內容
- 1、V1.0 生成指定長度的隨機英文/數字/符號
- 2、2.0 生成指定長度的隨機英文和數字
- 3、3.0 生成指定長度的隨機英文和數字和符號
- 4、4.0 生成多組資料并存入檔案
- 二、碰到的問題
- 問題1:生成多組資料,寫入檔案的代碼邏輯是怎么實作?
- 問題2:當密碼是純數字的時候,excel打開csv格式的檔案,顯示的是科學記數法?
- 問題3:當拿到一個需求時候,怎么梳理出代碼邏輯?
一、研發內容
1、V1.0 生成指定長度的隨機英文/數字/符號
"""
# V1.0 生成指定長度的隨機英文/數字/符號
import random
import string
# 輸入指定長度
minlin = int(input("請輸入最小值:"))
maxlen = int(input("請輸入最大值:"))
# 輸入指定型別
pwdtype = int(input("請輸入型別1:英文,型別2,數字,型別3:符號:"))
# 獲取指定長度
num = random.randint(minlin, maxlen)
# 需要哪種型別
str = ""
if pwdtype == 1:
for i in range(1, 11):
str = str + string.ascii_letters
elif pwdtype == 2:
for i in range(1, 11):
str = str + string.digits
elif pwdtype == 3:
for i in range(1, 11):
str = str + string.punctuation
else:
print("輸入有誤,請重新輸入,")
# 如果等于符號,則輸出
# 獲取隨機字串
pwdstr = "".join(random.sample(str,num))
print(pwdstr)
"""
"""
# V1.1 自動生成密碼資料,
用面向程序進行封裝
添加return進行函式的中斷
用if進行回傳值的判斷
"""
import random
import string
def get_pwd(minlin, maxlen, pwdtype):
# 獲取指定長度
num = random.randint(minlin, maxlen)
# 需要哪種型別
str = ""
if pwdtype == 1:
for i in range(1, 11):
str = str + string.ascii_letters
elif pwdtype == 2:
for i in range(1, 11):
str = str + string.digits
elif pwdtype == 3:
for i in range(1, 11):
str = str + string.punctuation
else:
print("輸入有誤,請重新輸入,")
return -1
# 如果等于符號,則輸出
# 獲取隨機字串
pwdstr = "".join(random.sample(str,num))
return pwdstr
if __name__ == '__main__':
# 輸入指定長度
minlin = int(input("請輸入最小值:"))
maxlen = int(input("請輸入最大值:"))
# 輸入指定型別
pwdtype = int(input("請輸入型別1:英文,型別2,數字,型別3:符號:"))
res = get_pwd(minlin, maxlen, pwdtype)
if res != -1:
print(res)
else:
print("")
2、2.0 生成指定長度的隨機英文和數字
"""
# V2.0 生成英文+數字的密碼,
(1)添加了elif的判斷,英文+數字使用了字串拼接來實作,還有字串的復制
"""
import random
import string
def get_pwd(minlin, maxlen, pwdtype):
# 獲取指定長度
num = random.randint(minlin, maxlen)
# 需要哪種型別
str = ""
if pwdtype == 1:
for i in range(1, 11):
str = str + string.ascii_letters
elif pwdtype == 2:
for i in range(1, 11):
str = str + string.digits
elif pwdtype == 3:
for i in range(1, 11):
str = str + string.punctuation
elif pwdtype == 4:
# 獲取指定長度的 英文+數字 的字串
for i in range(1, 11):
# str = str + string.ascii_letters + string.digits*10
str += string.ascii_letters + string.digits * 10
print(str)
else:
print("輸入有誤,請重新輸入,")
return -1
# 如果等于符號,則輸出
# 獲取隨機字串
pwdstr = "".join(random.sample(str,num))
return pwdstr
if __name__ == '__main__':
# 輸入指定長度
minlin = int(input("請輸入最小值:"))
maxlen = int(input("請輸入最大值:"))
# 輸入指定型別
pwdtype = int(input("請輸入型別1:英文,型別2,數字,型別3:符號,型別4:英文+數字:"))
res = get_pwd(minlin, maxlen, pwdtype)
if res != -1:
print(res)
else:
print("")
3、3.0 生成指定長度的隨機英文和數字和符號
"""
# V3.0 自動生成密碼資料,
(1)主要添加了 符號,對符號的比例進行了調整
"""
import random
import string
def get_pwd(minlin, maxlen, pwdtype):
# 獲取指定長度
num = random.randint(minlin, maxlen)
# 需要哪種型別
str = ""
if pwdtype == 1:
for i in range(1, 11):
str = str + string.ascii_letters
elif pwdtype == 2:
for i in range(1, 11):
str = str + string.digits
elif pwdtype == 3:
for i in range(1, 11):
str = str + string.punctuation
elif pwdtype == 4:
# 獲取指定長度的 英文+數字 的字串
for i in range(1, 11):
# str = str + string.ascii_letters + string.digits*10
str += string.ascii_letters + string.digits * 10
elif pwdtype == 5:
# 獲取指定長度的 英文+數字 的字串
for i in range(1, 11):
# str = str + string.ascii_letters + string.digits*10
str += string.ascii_letters + string.digits * 5 + string.digits * 2
else:
print("輸入有誤,請重新輸入,")
return -1
# 如果等于符號,則輸出
# 獲取隨機字串
pwdstr = "".join(random.sample(str,num))
return pwdstr
if __name__ == '__main__':
# 輸入指定長度
minlin = int(input("請輸入最小值:"))
maxlen = int(input("請輸入最大值:"))
# 輸入指定型別
pwdtype = int(input("請輸入型別1:英文,型別2,數字,型別3:符號,型別4:英文+數字,型別5:英文+數字+符號:"))
res = get_pwd(minlin, maxlen, pwdtype)
if res != -1:
print(res)
else:
print("")
4、4.0 生成多組資料并存入檔案
"""
# V4.0 4.0 生成多組資料并存入檔案
(1)存入檔案中,存入檔案四步走,打開檔案,打開編輯器,寫入內容,保存關閉檔案
(2)優化了用戶輸入,用戶沒有必要再去選擇1,2,3,4,5,隨機生成這5個數字
(3)添加了純數字會導致科學技術法的判斷,使用轉移轉義符"\t"進行處理
"""
import random
import string
import csv
def get_pwd(minlin, maxlen, pwdtype):
# 獲取指定長度
num = random.randint(minlin, maxlen)
# 需要哪種型別
str = ""
if pwdtype == 1:
for i in range(1, 11):
str = str + string.ascii_letters
elif pwdtype == 2:
for i in range(1, 11):
str = str + string.digits
elif pwdtype == 3:
for i in range(1, 11):
str = str + string.punctuation
elif pwdtype == 4:
# 獲取指定長度的 英文+數字 的字串
for i in range(1, 11):
# str = str + string.ascii_letters + string.digits*10
str += string.ascii_letters + string.digits * 10
elif pwdtype == 5:
# 獲取指定長度的 英文+數字 的字串
for i in range(1, 11):
# str = str + string.ascii_letters + string.digits*10
str += string.ascii_letters + string.digits * 5 + string.digits * 2
else:
print("輸入有誤,請重新輸入,")
return -1
# 如果等于符號,則輸出
# 獲取隨機字串
pwdstr = "".join(random.sample(str,num))
if pwdtype == 2: # 如果是數字格式的,則將其轉換成文本格式,如果不是,則繼續執行后續代碼
pwdstr = pwdstr + "\t"
return pwdstr
if __name__ == '__main__':
# 輸入指定長度
minlin = int(input("請輸入最小值:"))
maxlen = int(input("請輸入最大值:"))
count = int(input("需要多少組數:"))
# 輸入指定型別
# 打開檔案,打開編輯器,輸入檔案內容,關閉檔案
file = open("wenjian.csv", "w", newline="")
write = csv.writer(file)
write.writerow(["序號", "密碼"])
# pwdtype = int(input("請輸入型別1:英文,型別2,數字,型別3:符號,型別4:英文+數字,型別5:英文+數字+符號:"))
pwdtype = random.randint(1, 5) #
for i in range(1, count + 1):
res = get_pwd(minlin, maxlen, pwdtype)
write.writerow([i, res])
if res != -1:
print(res)
else:
print("")
file.close()
二、碰到的問題
問題1:生成多組資料,寫入檔案的代碼邏輯是怎么實作?
1、生成多組資料,呼叫的是for回圈,for i in range(1, count + 1):,生成count組資料,count 可以 console輸入:例如count=int(input())實作
2、寫入檔案的代碼邏輯跟手動是一樣一樣的:打開檔案,打開編輯器,輸入內容,保存關閉檔案,
3、寫入多組資料,則將“寫入內容”的代碼加入到for回圈中,即可實作,
問題2:當密碼是純數字的時候,excel打開csv格式的檔案,顯示的是科學記數法?
1、所以需求是:當輸出是純數字的時候,就行文本轉義“\t”

下次碰到類似需要再次處理的情況,回傳值之前,我們添加if判斷進行回傳值處理,然后做一個處理就可以實作了,
問題3:當拿到一個需求時候,怎么梳理出代碼邏輯?
1、直接敲出你要實作的代碼邏輯,漢字或者流程圖,
2、逆向一步步實作各種需求,示例:
(1)我們要實作的功能是:獲取隨機字串
pwdstr = “”.join(random.sample(str,num))
(2)對str這個入參進行處理:

(3)、對num這個數字進行處理:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299651.html
標籤:其他
上一篇:基于Android pytorch API 深度學習語意分割(上)
下一篇:IGBT的短路保護和過流保護
