'''
第一种方法:判断新生成的值是否在已经生成的密码字符串之中
第二种方法:每生成一个密码字符就把它从密码库中移除

问题:怎么才能使用递归的方法实现
'''
#不能用递归的方法
# def judge_repeat(new, old):
# while True:
# new = choice(passwd_lib)
# if new not in old:
# old += new
# return old
# break
# else:
# judge_repeat(new,old)

#!/usr/local/bin/python3
#导入模块
import string
from random import choice

passwd_lib = string.ascii_letters + string.digits #字母数字

##################第一种方法##################
#判断new的值是否在old之中
def judge_repeat(new, old):
while True:
new = choice(passwd_lib)
if new not in old:
old += new
return old
break

def gen_pwd(lenth = 8):
if lenth > len(passwd_lib):
print('长度超出范围!!!')
exit()
tmp_pwd = ''
password = ''
for i in range(lenth):
password = judge_repeat(tmp_pwd, password)
return password

##################第二种方法##################
# buf_pwd_lib = list(passwd_lib) #将字符串的密码库转换为列表
#
# #生成不重复密码
# def gen_pwd(lenth = 8):
# password = ''
# for i in range(lenth):
# tmp_pwd = choice(buf_pwd_lib)
# password += tmp_pwd
# buf_pwd_lib.remove(tmp_pwd)
# return password

if __name__ == '__main__':
print(gen_pwd())