1.生成9位字母的密碼
使用random.choice函式,此函式需要一個序列,因此給定一個序列包含a-z,A-Z
#step1:生成序列
import random
s1=``
for i in range(97,123):
s1+=chr(i)+chr(i-32)
#step2: 生成密碼
password=``
for i in range(9):
password+=random.choice(s1)#從s1序列中隨機選取一個元素
print(`9位數的密碼為:`,password)
2:生成9位數字和字母的密碼,密碼可能隨機出現數字和字母
此題在上一題的基礎上先生成一個序列包含所有字母和數字,然後使用random.choice()函式
import random
s1=``
for i in range(97,123):
s1+=chr(i)+chr(i-32)
s1+=`0123456789`
print(s1)
#生成包含小寫字母和數字的序列
#另外一個寫法
import string
s1 = string.ascii_letters+string.digits
password=``
for i in range(9):
password+=random.choice(s1)
print(`隨機密碼為:`,password)
3.檢測密碼強度
c1 : 長度>=8
c2: 包含數字和字母
c3: 其他可見的特殊字元
強密碼條件:滿足c1,c2,c3
中密碼條件: 只滿足任一2個條件
弱密碼條件:只滿足任一1個或0個條件
思路:先將c1,c2,c3三個條件寫成函式,以Ture和False返回,True為滿足,False為不滿足
step1.寫出3個條件函式
def check_len(password):
if len(password)>=8:
return True
#長度大於8則為True
else:
return False
def check_letter_type(password):
import string
result =False
for i in string.ascii_letters:
#大小寫字母
if i in password:
#密碼中包含字母
for j in string.digits:
#數字
if j in password:
#密碼中包含數字
result =True
return result
def check_punctuation(password):
import string
result = False
for i in string.punctuation:
if i in password:
#密碼中包含特殊字元
result =True
return result
check_len檢查密碼長度,check_letter_type檢查密碼中是否包含字母和數字,check_punctuation檢查密碼中是否包含特殊字元
step2:檢查密碼滿足幾個條件
def pass_verify(password):
count = 0
#使用count來記錄password滿足幾個條件
if check_len(password):
count +=1
if check_letter_type(password):
count +=1
if check_punctuation(password):
count +=1
if count==3:
print("強密碼")
elif count ==2:
print(`中密碼`)
else:
print(`弱密碼`)
pass_verify(password)