请编写程序,生成随机密码。具体要求如下:
(1)使用 random 库,采用 0x1010 作为随机数种子。
(2)密码 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&* 中的字符组成。
(3)每个密码长度固定为 10 个字符。
(4)程序运行每次产生 10 个密码,每个密码一行。
(5)每次产生的 10 个密码首字符不能一样。
(6)程序运行后产生的密码保存在“随机密码.txt”文件中。
不写入文件,直接 print 10 个密码即可自动评阅
法一:
import random
random.seed(0x1010)
s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*'
ls = []
pwd = ""
pwd+=(s[random.randint(0, len(s))-2])
for a in range(10):
for i in range(9):
# TODO: write code...
pwd += s[random.randint(0, len(s))-1]
print(pwd)
pwd = ""
ls.append(pwd)
with open("随机密码.txt", "w") as f:
f.write("\n".join(ls))
f.close()
法二:
import random
random.seed(0x1010)
s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*"
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]
# 直接打印
print("\n".join(ls))
# 或写入文件
# fo = open("随机密码.txt", "w")
# fo.write("\n".join(ls))
# fo.close()
法二是答案上的但感觉比较麻烦