请编写程序,生成随机密码。具体要求如下: (1)使用random库,采用0x1010作为随机数种子。 (2)密码由26个字母大小写、10个数字字符和!@#$%∧&*等8个特殊符号组成。 (3)每个密码长度固定为10个字符。 (4)程序运行每次产生10个密码

admin2019-08-30  74

问题 请编写程序,生成随机密码。具体要求如下:
(1)使用random库,采用0x1010作为随机数种子。
(2)密码由26个字母大小写、10个数字字符和!@#$%&*等8个特殊符号组成。
(3)每个密码长度固定为10个字符。
(4)程序运行每次产生10个密码,每个密码一行。
(5)每次产生的10个密码首字符不能一样。
(6)程序运行后产生的密码保存在“随机密码.txt”文件中。

选项

答案import random random.seed(0x1010) s=’’abcdefghijklmnopqrstuvwxyzABCDEFGHUKLMNOPQRSTUVWXYZ\ 1234567890!@#$%&*’’ ls=[] excludes=’’’’ while len(ls)<10: pwd=’’’’ for i in range(10): pwd+=S[random.randint(0,len(s)一1)] if pwd[0]in excludes: continue else: ls.append(pwd) excludes+=pwd[0] fo=open(’’随机密码.txt’’,’’w’’) fo.write(’’\n”.join(ls)) fo.close()

解析 这是一个综合应用题,考核随机数及文本操作能力。
本题目涉及产生10个随机密码,但要求随机密码首位不能相同,可以考虑随机生成密码并判断是否首位已经存在,如果存在则再次生成密码。因此,这种模式无法确定循环产生密码的总次数,程序框架应采用while语句实现。
题目规定了密码采用的字符信息,共44个,含字母、数字和特殊符号,可以将这些字符组织成字符串,便于后续根据其中字符生成密码。
程序主体逻辑包括:生成一个10字符长度密码,判断首位是否在已生成密码首位组成的排除字符串excludes中,如果存在,则再次生成密码,否则将生成密码的首位加入排除字符串excludes中。所生成密码存储在列表变量ls中,每个密码为列表中一个元素。最后,将密码输出到文件。
综上,参考代码及注释如下:
import random
random.seed(0x1010)    #设置随机数种子
s=’’abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\
1234567890!@#$%&*’’
ls=[]    #保存生成的随机密码
excludes=’’’’
while len(18)<10:  #程序主要的while循环
pwd=’’’’
for i in range(10):
pwd+=s[random.randint(0,len(s)一1)]
if pwd[0]in excludes:
continue  #首位存在,则继续循环再生成新的密码
else:
ls.append(pwd)
excludes+=pwd[0]    #生成的密码首位加入排除字符串excludes
fo=open(’’随机密码.txt’’,’’w’’)
fo.write(’’\n’’.join(ls))
fo.close()
转载请注明原文地址:https://jikaoti.com/ti/5I50FFFM
0

最新回复(0)