xp密钥生成器(57个挑战-37-设计随机密码生成器,python实现)

题目如下



解决思路如下:

找一个本子,把算法思路画下来。可以写的杂乱,后续把思路和流程图画清楚即可。


xp密钥

具体代码实现:

import random def get_input(): #获取密钥串的长度,获取密钥串中特殊字符的个数,获取密钥串中数字的个数,并返回 pswdlength=input("What's the minimum length") speclength=input("How many special characters?") numblength=input("How many numbers?") return pswdlength,speclength,numblength def randomspecial():#返回随机特殊字符 lista=('~',"!","@","#","$","%","&","*","(",")","_","+","-","=") i=random.randint(0,len(lista)-1) return lista[i] def randomcharacter():#返回随机字母 listb=("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") j=random.randint(0,len(listb)-1) return listb[j] def producelist(pswdlength,speclength,numblength): #产生一个列表 list = {} pswdlength = int(pswdlength) speclength = int(speclength) numblength = int(numblength) leftlength = pswdlength - speclength- numblength for i in range(0,pswdlength): if speclength>0: list[i]=randomspecial() speclength = speclength - 1 elif numblength>0: list[i]=random.randint(0,9) numblength = numblength - 1 elif leftlength>0: list[i]=randomcharacter() leftlength = leftlength - 1 #print("字符串长度是{0}".format(len(list))) #debug 用 return list def randomlizelist(list): #交换算法,遍历key,随机和字典里面其它的key下的value进行交换。 listlength = len(list) for i in range(0,listlength-1): j = random.randint(0,listlength-1) temp = list[i] list[i] = list[j] list[j] = temp return list if __name__ == '__main__': pswdlength,speclength,numblength = get_input() list=producelist(pswdlength,speclength,numblength) list=randomlizelist(list) print("Your password is ",end="") for i in range(0,len(list)): print(list[i],end="") #debug 用 print("")#debug 用 #debug 用 print(list)#debug 用

效果图:


您可以还会对下面的文章感兴趣

最新评论

  1. 叼着奶瓶闯天下
    叼着奶瓶闯天下
    发布于:2022-04-27 09:31:44 回复TA
    special() speclength = speclength - 1 elif numblength>0: list[i]=random.randint(0,9)
  1. 方全浩民
    方全浩民
    发布于:2022-04-27 01:39:37 回复TA
    真过意不去
  1. 武茜翰胜
    武茜翰胜
    发布于:2022-04-27 01:39:37 回复TA
    如果感到郁闷,请拨打俺的电话!谈感情请按,谈工作请按,谈人生请按,给俺介绍对象请按,请俺吃饭请大声直说,找俺借钱庆直接挂机。

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友