import random
import string
passwd=[]
for i in range(100):
passwd = set(random.sample(string.ascii_letters + string.digits,8))
if passwd.intersection(string.ascii_uppercase) and passwd.intersection(string.ascii_lowercase) and passwd.intersection(string.digits):
pw="".join(passwd)
card=[]
for i in range(100):
s='6102009'+'%.3d'%(i+1)
card.append(s)
Card = {}.fromkeys(card, pw)
print('卡号 密码')
for i,j in Card.items():
print(i,' ',j)
你的这句Card = {}.fromkeys(card, pw)有毛病,这里 的pw一直都是第100次的pw,所以你的密码一直相等,这么改
import random
import string
passwd=[]
card={}
for i in range(100):
passwd = set(random.sample(string.ascii_letters + string.digits,8))
if passwd.intersection(string.ascii_uppercase) and passwd.intersection(string.ascii_lowercase) and passwd.intersection(string.digits):
pw="".join(passwd)
s='6102009'+'%.3d'%(i+1)
card[s]=pw
print('卡号 密码')
for i,j in card.items():
print(i,' ',j)
如有帮助,点一下下采纳
pw是你for循环最后才用的,也就是前99个pw虽然生成了,但没有用到,一直都是只调用了第100个pw,所以密码就都是同一个。
改进思路:你可以在for循环外面用列表接收每次生成的pw
这个随机数其实可以认为是伪随机数,他的seed是同一个吧
>>> import string,random
>>> [''.join(random.sample(string.ascii_letters+string.digits*5,10)) for _ in range(30)] #10位密码
['049U962i86', 'wr1L9n58FG', '6aN4oDcp38', 'Lb71W882YV', 'ngpd19la9M', '6C1jR0424s', 'Y362fcz8t2', 'W26038M629', 'e2k2zH9t76', 'F6glUw7033', 'HjkO2Gtu65', '21gPIl706N', '95113UzfW5', '33hv7VU1sH', '7DGc90K2nf', '34JD17b878', '81qv5w27ga', '793HVeyUMA', '41g41i1BK4', '3t7AxG5d00', 'Gid1164pOX', 'BK0257v5yX', '86zN0RFJ36', '9P4Smi13nj', '86X363sRB4', '358ob24fg9', '40k14iq2g7', 'g4Axwr8072', 'eM829B5963', 'yl2d023UbK']
>>> [''.join(random.sample(string.printable[:-6],10)) for _ in range(30)] #任意字符密码
['R+E?DFo;%0', '7dH)zMN03?', 'K1q0~o!^d>', '!Yf0.LyzwD', "^'9<Jh#?y/", 'O"1w/$xump', 'M|B1l?OX\\=', "$-'aH=31+O", 'EMg\\*Z"oz}', 'N(*^l4|3<5', ',+)a0Kfl<q', '}Q&@0%KY.z', '0M-<nyiCF`', 'bX+3AC|Q7o', '^?|\\Y`C=[8', 'R(f-9OvU"#', '_$l/w5e;ps', '$eSRY+|M!z', ',T\\@IBRfQ{', '!a;LY.+Epz', '&w?(Y7Uy>Z', '&4Zf3zCk1-', 'LZ"x@i>%IO', "'{ZyK~o5dp", '1h<TBY{,nV', 'a4IeX~hSz>', 'Aa/6|b7$QV', 'lUv}tM7@>4', "Bcw5}'>4Wa", '1f:W?t&G_k']